xref: /PHP-7.2/Zend/zend_vm_execute.h (revision a2c41c0e)
1 /*
2    +----------------------------------------------------------------------+
3    | Zend Engine                                                          |
4    +----------------------------------------------------------------------+
5    | Copyright (c) 1998-2018 Zend Technologies Ltd. (http://www.zend.com) |
6    +----------------------------------------------------------------------+
7    | This source file is subject to version 2.00 of the Zend license,     |
8    | that is bundled with this package in the file LICENSE, and is        |
9    | available through the world-wide-web at the following url:           |
10    | http://www.zend.com/license/2_00.txt.                                |
11    | If you did not receive a copy of the Zend license and are unable to  |
12    | obtain it through the world-wide-web, please send a note to          |
13    | license@zend.com so we can mail you a copy immediately.              |
14    +----------------------------------------------------------------------+
15    | Authors: Andi Gutmans <andi@zend.com>                                |
16    |          Zeev Suraski <zeev@zend.com>                                |
17    |          Dmitry Stogov <dmitry@zend.com>                             |
18    +----------------------------------------------------------------------+
19 */
20 
21 #ifdef ZEND_WIN32
22 # pragma warning(disable : 4101)
23 # pragma warning(once : 6235)
24 # pragma warning(once : 6237)
25 # pragma warning(once : 6239)
26 # pragma warning(once : 6240)
27 # pragma warning(once : 6285)
28 # pragma warning(once : 6286)
29 # pragma warning(once : 6326)
30 #endif
31 static user_opcode_handler_t zend_user_opcode_handlers[256] = {
32 	(user_opcode_handler_t)NULL,
33 	(user_opcode_handler_t)NULL,
34 	(user_opcode_handler_t)NULL,
35 	(user_opcode_handler_t)NULL,
36 	(user_opcode_handler_t)NULL,
37 	(user_opcode_handler_t)NULL,
38 	(user_opcode_handler_t)NULL,
39 	(user_opcode_handler_t)NULL,
40 	(user_opcode_handler_t)NULL,
41 	(user_opcode_handler_t)NULL,
42 	(user_opcode_handler_t)NULL,
43 	(user_opcode_handler_t)NULL,
44 	(user_opcode_handler_t)NULL,
45 	(user_opcode_handler_t)NULL,
46 	(user_opcode_handler_t)NULL,
47 	(user_opcode_handler_t)NULL,
48 	(user_opcode_handler_t)NULL,
49 	(user_opcode_handler_t)NULL,
50 	(user_opcode_handler_t)NULL,
51 	(user_opcode_handler_t)NULL,
52 	(user_opcode_handler_t)NULL,
53 	(user_opcode_handler_t)NULL,
54 	(user_opcode_handler_t)NULL,
55 	(user_opcode_handler_t)NULL,
56 	(user_opcode_handler_t)NULL,
57 	(user_opcode_handler_t)NULL,
58 	(user_opcode_handler_t)NULL,
59 	(user_opcode_handler_t)NULL,
60 	(user_opcode_handler_t)NULL,
61 	(user_opcode_handler_t)NULL,
62 	(user_opcode_handler_t)NULL,
63 	(user_opcode_handler_t)NULL,
64 	(user_opcode_handler_t)NULL,
65 	(user_opcode_handler_t)NULL,
66 	(user_opcode_handler_t)NULL,
67 	(user_opcode_handler_t)NULL,
68 	(user_opcode_handler_t)NULL,
69 	(user_opcode_handler_t)NULL,
70 	(user_opcode_handler_t)NULL,
71 	(user_opcode_handler_t)NULL,
72 	(user_opcode_handler_t)NULL,
73 	(user_opcode_handler_t)NULL,
74 	(user_opcode_handler_t)NULL,
75 	(user_opcode_handler_t)NULL,
76 	(user_opcode_handler_t)NULL,
77 	(user_opcode_handler_t)NULL,
78 	(user_opcode_handler_t)NULL,
79 	(user_opcode_handler_t)NULL,
80 	(user_opcode_handler_t)NULL,
81 	(user_opcode_handler_t)NULL,
82 	(user_opcode_handler_t)NULL,
83 	(user_opcode_handler_t)NULL,
84 	(user_opcode_handler_t)NULL,
85 	(user_opcode_handler_t)NULL,
86 	(user_opcode_handler_t)NULL,
87 	(user_opcode_handler_t)NULL,
88 	(user_opcode_handler_t)NULL,
89 	(user_opcode_handler_t)NULL,
90 	(user_opcode_handler_t)NULL,
91 	(user_opcode_handler_t)NULL,
92 	(user_opcode_handler_t)NULL,
93 	(user_opcode_handler_t)NULL,
94 	(user_opcode_handler_t)NULL,
95 	(user_opcode_handler_t)NULL,
96 	(user_opcode_handler_t)NULL,
97 	(user_opcode_handler_t)NULL,
98 	(user_opcode_handler_t)NULL,
99 	(user_opcode_handler_t)NULL,
100 	(user_opcode_handler_t)NULL,
101 	(user_opcode_handler_t)NULL,
102 	(user_opcode_handler_t)NULL,
103 	(user_opcode_handler_t)NULL,
104 	(user_opcode_handler_t)NULL,
105 	(user_opcode_handler_t)NULL,
106 	(user_opcode_handler_t)NULL,
107 	(user_opcode_handler_t)NULL,
108 	(user_opcode_handler_t)NULL,
109 	(user_opcode_handler_t)NULL,
110 	(user_opcode_handler_t)NULL,
111 	(user_opcode_handler_t)NULL,
112 	(user_opcode_handler_t)NULL,
113 	(user_opcode_handler_t)NULL,
114 	(user_opcode_handler_t)NULL,
115 	(user_opcode_handler_t)NULL,
116 	(user_opcode_handler_t)NULL,
117 	(user_opcode_handler_t)NULL,
118 	(user_opcode_handler_t)NULL,
119 	(user_opcode_handler_t)NULL,
120 	(user_opcode_handler_t)NULL,
121 	(user_opcode_handler_t)NULL,
122 	(user_opcode_handler_t)NULL,
123 	(user_opcode_handler_t)NULL,
124 	(user_opcode_handler_t)NULL,
125 	(user_opcode_handler_t)NULL,
126 	(user_opcode_handler_t)NULL,
127 	(user_opcode_handler_t)NULL,
128 	(user_opcode_handler_t)NULL,
129 	(user_opcode_handler_t)NULL,
130 	(user_opcode_handler_t)NULL,
131 	(user_opcode_handler_t)NULL,
132 	(user_opcode_handler_t)NULL,
133 	(user_opcode_handler_t)NULL,
134 	(user_opcode_handler_t)NULL,
135 	(user_opcode_handler_t)NULL,
136 	(user_opcode_handler_t)NULL,
137 	(user_opcode_handler_t)NULL,
138 	(user_opcode_handler_t)NULL,
139 	(user_opcode_handler_t)NULL,
140 	(user_opcode_handler_t)NULL,
141 	(user_opcode_handler_t)NULL,
142 	(user_opcode_handler_t)NULL,
143 	(user_opcode_handler_t)NULL,
144 	(user_opcode_handler_t)NULL,
145 	(user_opcode_handler_t)NULL,
146 	(user_opcode_handler_t)NULL,
147 	(user_opcode_handler_t)NULL,
148 	(user_opcode_handler_t)NULL,
149 	(user_opcode_handler_t)NULL,
150 	(user_opcode_handler_t)NULL,
151 	(user_opcode_handler_t)NULL,
152 	(user_opcode_handler_t)NULL,
153 	(user_opcode_handler_t)NULL,
154 	(user_opcode_handler_t)NULL,
155 	(user_opcode_handler_t)NULL,
156 	(user_opcode_handler_t)NULL,
157 	(user_opcode_handler_t)NULL,
158 	(user_opcode_handler_t)NULL,
159 	(user_opcode_handler_t)NULL,
160 	(user_opcode_handler_t)NULL,
161 	(user_opcode_handler_t)NULL,
162 	(user_opcode_handler_t)NULL,
163 	(user_opcode_handler_t)NULL,
164 	(user_opcode_handler_t)NULL,
165 	(user_opcode_handler_t)NULL,
166 	(user_opcode_handler_t)NULL,
167 	(user_opcode_handler_t)NULL,
168 	(user_opcode_handler_t)NULL,
169 	(user_opcode_handler_t)NULL,
170 	(user_opcode_handler_t)NULL,
171 	(user_opcode_handler_t)NULL,
172 	(user_opcode_handler_t)NULL,
173 	(user_opcode_handler_t)NULL,
174 	(user_opcode_handler_t)NULL,
175 	(user_opcode_handler_t)NULL,
176 	(user_opcode_handler_t)NULL,
177 	(user_opcode_handler_t)NULL,
178 	(user_opcode_handler_t)NULL,
179 	(user_opcode_handler_t)NULL,
180 	(user_opcode_handler_t)NULL,
181 	(user_opcode_handler_t)NULL,
182 	(user_opcode_handler_t)NULL,
183 	(user_opcode_handler_t)NULL,
184 	(user_opcode_handler_t)NULL,
185 	(user_opcode_handler_t)NULL,
186 	(user_opcode_handler_t)NULL,
187 	(user_opcode_handler_t)NULL,
188 	(user_opcode_handler_t)NULL,
189 	(user_opcode_handler_t)NULL,
190 	(user_opcode_handler_t)NULL,
191 	(user_opcode_handler_t)NULL,
192 	(user_opcode_handler_t)NULL,
193 	(user_opcode_handler_t)NULL,
194 	(user_opcode_handler_t)NULL,
195 	(user_opcode_handler_t)NULL,
196 	(user_opcode_handler_t)NULL,
197 	(user_opcode_handler_t)NULL,
198 	(user_opcode_handler_t)NULL,
199 	(user_opcode_handler_t)NULL,
200 	(user_opcode_handler_t)NULL,
201 	(user_opcode_handler_t)NULL,
202 	(user_opcode_handler_t)NULL,
203 	(user_opcode_handler_t)NULL,
204 	(user_opcode_handler_t)NULL,
205 	(user_opcode_handler_t)NULL,
206 	(user_opcode_handler_t)NULL,
207 	(user_opcode_handler_t)NULL,
208 	(user_opcode_handler_t)NULL,
209 	(user_opcode_handler_t)NULL,
210 	(user_opcode_handler_t)NULL,
211 	(user_opcode_handler_t)NULL,
212 	(user_opcode_handler_t)NULL,
213 	(user_opcode_handler_t)NULL,
214 	(user_opcode_handler_t)NULL,
215 	(user_opcode_handler_t)NULL,
216 	(user_opcode_handler_t)NULL,
217 	(user_opcode_handler_t)NULL,
218 	(user_opcode_handler_t)NULL,
219 	(user_opcode_handler_t)NULL,
220 	(user_opcode_handler_t)NULL,
221 	(user_opcode_handler_t)NULL,
222 	(user_opcode_handler_t)NULL,
223 	(user_opcode_handler_t)NULL,
224 	(user_opcode_handler_t)NULL,
225 	(user_opcode_handler_t)NULL,
226 	(user_opcode_handler_t)NULL,
227 	(user_opcode_handler_t)NULL,
228 	(user_opcode_handler_t)NULL,
229 	(user_opcode_handler_t)NULL,
230 	(user_opcode_handler_t)NULL,
231 	(user_opcode_handler_t)NULL,
232 	(user_opcode_handler_t)NULL,
233 	(user_opcode_handler_t)NULL,
234 	(user_opcode_handler_t)NULL,
235 	(user_opcode_handler_t)NULL,
236 	(user_opcode_handler_t)NULL,
237 	(user_opcode_handler_t)NULL,
238 	(user_opcode_handler_t)NULL,
239 	(user_opcode_handler_t)NULL,
240 	(user_opcode_handler_t)NULL,
241 	(user_opcode_handler_t)NULL,
242 	(user_opcode_handler_t)NULL,
243 	(user_opcode_handler_t)NULL,
244 	(user_opcode_handler_t)NULL,
245 	(user_opcode_handler_t)NULL,
246 	(user_opcode_handler_t)NULL,
247 	(user_opcode_handler_t)NULL,
248 	(user_opcode_handler_t)NULL,
249 	(user_opcode_handler_t)NULL,
250 	(user_opcode_handler_t)NULL,
251 	(user_opcode_handler_t)NULL,
252 	(user_opcode_handler_t)NULL,
253 	(user_opcode_handler_t)NULL,
254 	(user_opcode_handler_t)NULL,
255 	(user_opcode_handler_t)NULL,
256 	(user_opcode_handler_t)NULL,
257 	(user_opcode_handler_t)NULL,
258 	(user_opcode_handler_t)NULL,
259 	(user_opcode_handler_t)NULL,
260 	(user_opcode_handler_t)NULL,
261 	(user_opcode_handler_t)NULL,
262 	(user_opcode_handler_t)NULL,
263 	(user_opcode_handler_t)NULL,
264 	(user_opcode_handler_t)NULL,
265 	(user_opcode_handler_t)NULL,
266 	(user_opcode_handler_t)NULL,
267 	(user_opcode_handler_t)NULL,
268 	(user_opcode_handler_t)NULL,
269 	(user_opcode_handler_t)NULL,
270 	(user_opcode_handler_t)NULL,
271 	(user_opcode_handler_t)NULL,
272 	(user_opcode_handler_t)NULL,
273 	(user_opcode_handler_t)NULL,
274 	(user_opcode_handler_t)NULL,
275 	(user_opcode_handler_t)NULL,
276 	(user_opcode_handler_t)NULL,
277 	(user_opcode_handler_t)NULL,
278 	(user_opcode_handler_t)NULL,
279 	(user_opcode_handler_t)NULL,
280 	(user_opcode_handler_t)NULL,
281 	(user_opcode_handler_t)NULL,
282 	(user_opcode_handler_t)NULL,
283 	(user_opcode_handler_t)NULL,
284 	(user_opcode_handler_t)NULL,
285 	(user_opcode_handler_t)NULL,
286 	(user_opcode_handler_t)NULL,
287 	(user_opcode_handler_t)NULL
288 };
289 
290 static zend_uchar zend_user_opcodes[256] = {0,
291 	1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
292 	17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,
293 	33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,
294 	49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,
295 	65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,
296 	81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,
297 	97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,
298 	113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,
299 	129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,
300 	145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,
301 	161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,
302 	177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,
303 	193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,
304 	209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,
305 	225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,
306 	241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
307 };
308 
309 #define SPEC_START_MASK        0x0000ffff
310 #define SPEC_RULE_OP1          0x00010000
311 #define SPEC_RULE_OP2          0x00020000
312 #define SPEC_RULE_OP_DATA      0x00040000
313 #define SPEC_RULE_RETVAL       0x00080000
314 #define SPEC_RULE_QUICK_ARG    0x00100000
315 #define SPEC_RULE_SMART_BRANCH 0x00200000
316 #define SPEC_RULE_DIM_OBJ      0x00400000
317 
318 static const uint32_t *zend_spec_handlers;
319 static const void **zend_opcode_handlers;
320 static int zend_handlers_count;
321 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
322 static const void **zend_opcode_handler_funcs;
323 static zend_op hybrid_halt_op;
324 #endif
325 static const void *zend_vm_get_opcode_handler(zend_uchar opcode, const zend_op* op);
326 
327 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
328 static const void *zend_vm_get_opcode_handler_func(zend_uchar opcode, const zend_op* op);
329 #else
330 # define zend_vm_get_opcode_handler_func zend_vm_get_opcode_handler
331 #endif
332 
333 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
334 #define HYBRID_NEXT()     goto *(void**)(OPLINE->handler)
335 #define HYBRID_SWITCH()   HYBRID_NEXT();
336 #define HYBRID_CASE(op)   op ## _LABEL
337 #define HYBRID_BREAK()    HYBRID_NEXT()
338 #define HYBRID_DEFAULT    ZEND_NULL_LABEL
339 #endif
340 
341 #ifdef ZEND_VM_FP_GLOBAL_REG
342 # define ZEND_OPCODE_HANDLER_ARGS void
343 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU
344 # define ZEND_OPCODE_HANDLER_ARGS_DC
345 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC
346 #else
347 # define ZEND_OPCODE_HANDLER_ARGS zend_execute_data *execute_data
348 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU execute_data
349 # define ZEND_OPCODE_HANDLER_ARGS_DC , ZEND_OPCODE_HANDLER_ARGS
350 # define ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC , ZEND_OPCODE_HANDLER_ARGS_PASSTHRU
351 #endif
352 
353 #if defined(ZEND_VM_FP_GLOBAL_REG) && defined(ZEND_VM_IP_GLOBAL_REG)
354 # define ZEND_OPCODE_HANDLER_RET void
355 # define ZEND_VM_TAIL_CALL(call) call; return
356 # ifdef ZEND_VM_TAIL_CALL_DISPATCH
357 #  define ZEND_VM_CONTINUE()     ((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); return
358 # else
359 #  define ZEND_VM_CONTINUE()     return
360 # endif
361 # if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
362 #  define ZEND_VM_RETURN()        opline = &hybrid_halt_op; return
363 #  define ZEND_VM_HOT             zend_always_inline
364 # else
365 #  define ZEND_VM_RETURN()        opline = NULL; return
366 #  define ZEND_VM_HOT
367 # endif
368 #else
369 # define ZEND_OPCODE_HANDLER_RET int
370 # define ZEND_VM_TAIL_CALL(call) return call
371 # define ZEND_VM_CONTINUE()      return  0
372 # define ZEND_VM_RETURN()        return -1
373 # define ZEND_VM_HOT
374 #endif
375 
376 typedef ZEND_OPCODE_HANDLER_RET (ZEND_FASTCALL *opcode_handler_t) (ZEND_OPCODE_HANDLER_ARGS);
377 
378 #undef OPLINE
379 #undef DCL_OPLINE
380 #undef USE_OPLINE
381 #undef LOAD_OPLINE
382 #undef LOAD_OPLINE_EX
383 #undef SAVE_OPLINE
384 #define DCL_OPLINE
385 #ifdef ZEND_VM_IP_GLOBAL_REG
386 # define OPLINE opline
387 # define USE_OPLINE
388 # define LOAD_OPLINE() opline = EX(opline)
389 # define LOAD_NEXT_OPLINE() opline = EX(opline) + 1
390 # define SAVE_OPLINE() EX(opline) = opline
391 #else
392 # define OPLINE EX(opline)
393 # define USE_OPLINE const zend_op *opline = EX(opline);
394 # define LOAD_OPLINE()
395 # define LOAD_NEXT_OPLINE() ZEND_VM_INC_OPCODE()
396 # define SAVE_OPLINE()
397 #endif
398 #undef HANDLE_EXCEPTION
399 #undef HANDLE_EXCEPTION_LEAVE
400 #define HANDLE_EXCEPTION() LOAD_OPLINE(); ZEND_VM_CONTINUE()
401 #define HANDLE_EXCEPTION_LEAVE() LOAD_OPLINE(); ZEND_VM_LEAVE()
402 #if defined(ZEND_VM_FP_GLOBAL_REG)
403 # define ZEND_VM_ENTER()           execute_data = EG(current_execute_data); LOAD_OPLINE(); ZEND_VM_INTERRUPT_CHECK(); ZEND_VM_CONTINUE()
404 # define ZEND_VM_LEAVE()           ZEND_VM_CONTINUE()
405 #elif defined(ZEND_VM_IP_GLOBAL_REG)
406 # define ZEND_VM_ENTER()           opline = EG(current_execute_data)->opline; return 1
407 # define ZEND_VM_LEAVE()           return  2
408 #else
409 # define ZEND_VM_ENTER()           return  1
410 # define ZEND_VM_LEAVE()           return  2
411 #endif
412 #define ZEND_VM_INTERRUPT()      ZEND_VM_TAIL_CALL(zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
413 #define ZEND_VM_LOOP_INTERRUPT() zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
414 #define ZEND_VM_DISPATCH(opcode, opline) ZEND_VM_TAIL_CALL(((opcode_handler_t)zend_vm_get_opcode_handler_func(opcode, opline))(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
415 
416 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS);
zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)417 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
418 {
419 	USE_OPLINE
420 
421 	SAVE_OPLINE();
422 	zend_throw_error(NULL, "Using $this when not in object context");
423 	if ((opline+1)->opcode == ZEND_OP_DATA) {
424 		FREE_UNFETCHED_OP((opline+1)->op1_type, (opline+1)->op1.var);
425 	}
426 	FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
427 	UNDEF_RESULT();
428 	HANDLE_EXCEPTION();
429 }
430 
zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)431 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
432 {
433 	zend_execute_data *old_execute_data;
434 	uint32_t call_info = EX_CALL_INFO();
435 
436 	if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP|ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS|ZEND_CALL_ALLOCATED)) == 0)) {
437 		i_free_compiled_variables(execute_data);
438 
439 		EG(current_execute_data) = EX(prev_execute_data);
440 		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
441 			zend_object *object = Z_OBJ(execute_data->This);
442 #if 0
443 			if (UNEXPECTED(EG(exception) != NULL) && (EX(opline)->op1.num & ZEND_CALL_CTOR)) {
444 #else
445 			if (UNEXPECTED(EG(exception) != NULL) && (call_info & ZEND_CALL_CTOR)) {
446 #endif
447 				GC_REFCOUNT(object)--;
448 				zend_object_store_ctor_failed(object);
449 			}
450 			OBJ_RELEASE(object);
451 		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
452 			OBJ_RELEASE((zend_object*)execute_data->func->op_array.prototype);
453 		}
454 		EG(vm_stack_top) = (zval*)execute_data;
455 		execute_data = EX(prev_execute_data);
456 
457 		if (UNEXPECTED(EG(exception) != NULL)) {
458 			zend_rethrow_exception(execute_data);
459 			HANDLE_EXCEPTION_LEAVE();
460 		}
461 
462 		LOAD_NEXT_OPLINE();
463 		ZEND_VM_LEAVE();
464 	} else if (EXPECTED((call_info & (ZEND_CALL_CODE|ZEND_CALL_TOP)) == 0)) {
465 		i_free_compiled_variables(execute_data);
466 
467 		if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
468 			zend_clean_and_cache_symbol_table(EX(symbol_table));
469 		}
470 		EG(current_execute_data) = EX(prev_execute_data);
471 
472 		/* Free extra args before releasing the closure,
473 		 * as that may free the op_array. */
474 		zend_vm_stack_free_extra_args_ex(call_info, execute_data);
475 
476 		if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
477 			zend_object *object = Z_OBJ(execute_data->This);
478 #if 0
479 			if (UNEXPECTED(EG(exception) != NULL) && (EX(opline)->op1.num & ZEND_CALL_CTOR)) {
480 #else
481 			if (UNEXPECTED(EG(exception) != NULL) && (call_info & ZEND_CALL_CTOR)) {
482 #endif
483 				GC_REFCOUNT(object)--;
484 				zend_object_store_ctor_failed(object);
485 			}
486 			OBJ_RELEASE(object);
487 		} else if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
488 			OBJ_RELEASE((zend_object*)execute_data->func->op_array.prototype);
489 		}
490 
491 		old_execute_data = execute_data;
492 		execute_data = EX(prev_execute_data);
493 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
494 
495 		if (UNEXPECTED(EG(exception) != NULL)) {
496 			zend_rethrow_exception(execute_data);
497 			HANDLE_EXCEPTION_LEAVE();
498 		}
499 
500 		LOAD_NEXT_OPLINE();
501 		ZEND_VM_LEAVE();
502 	} else if (EXPECTED((call_info & ZEND_CALL_TOP) == 0)) {
503 		zend_detach_symbol_table(execute_data);
504 		destroy_op_array(&EX(func)->op_array);
505 		efree_size(EX(func), sizeof(zend_op_array));
506 		old_execute_data = execute_data;
507 		execute_data = EG(current_execute_data) = EX(prev_execute_data);
508 		zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
509 
510 		zend_attach_symbol_table(execute_data);
511 		if (UNEXPECTED(EG(exception) != NULL)) {
512 			zend_rethrow_exception(execute_data);
513 			HANDLE_EXCEPTION_LEAVE();
514 		}
515 
516 		LOAD_NEXT_OPLINE();
517 		ZEND_VM_LEAVE();
518 	} else {
519 		if (EXPECTED((call_info & ZEND_CALL_CODE) == 0)) {
520 			i_free_compiled_variables(execute_data);
521 			if (UNEXPECTED(call_info & (ZEND_CALL_HAS_SYMBOL_TABLE|ZEND_CALL_FREE_EXTRA_ARGS))) {
522 				if (UNEXPECTED(call_info & ZEND_CALL_HAS_SYMBOL_TABLE)) {
523 					zend_clean_and_cache_symbol_table(EX(symbol_table));
524 				}
525 				zend_vm_stack_free_extra_args_ex(call_info, execute_data);
526 			}
527 			EG(current_execute_data) = EX(prev_execute_data);
528 			if (UNEXPECTED(call_info & ZEND_CALL_CLOSURE)) {
529 				OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
530 			}
531 			ZEND_VM_RETURN();
532 		} else /* if (call_kind == ZEND_CALL_TOP_CODE) */ {
533 			zend_array *symbol_table = EX(symbol_table);
534 
535 			zend_detach_symbol_table(execute_data);
536 			old_execute_data = EX(prev_execute_data);
537 			while (old_execute_data) {
538 				if (old_execute_data->func && (ZEND_CALL_INFO(old_execute_data) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
539 					if (old_execute_data->symbol_table == symbol_table) {
540 						zend_attach_symbol_table(old_execute_data);
541 					}
542 					break;
543 				}
544 				old_execute_data = old_execute_data->prev_execute_data;
545 			}
546 			EG(current_execute_data) = EX(prev_execute_data);
547 			ZEND_VM_RETURN();
548 		}
549 	}
550 }
551 
552 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
553 {
554 	USE_OPLINE
555 
556 	ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op1));
557 	ZEND_VM_CONTINUE();
558 }
559 
560 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
561 {
562 	USE_OPLINE
563 	zend_execute_data *call = EX(call);
564 	zend_function *fbc = call->func;
565 	zval *ret;
566 	zval retval;
567 
568 	SAVE_OPLINE();
569 	EX(call) = call->prev_execute_data;
570 
571 	call->prev_execute_data = execute_data;
572 	EG(current_execute_data) = call;
573 
574 	ret = 0 ? EX_VAR(opline->result.var) : &retval;
575 	ZVAL_NULL(ret);
576 
577 	fbc->internal_function.handler(call, ret);
578 
579 #if ZEND_DEBUG
580 	ZEND_ASSERT(
581 		EG(exception) || !call->func ||
582 		!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
583 		zend_verify_internal_return_type(call->func, ret));
584 	ZEND_ASSERT(!Z_ISREF_P(ret));
585 #endif
586 
587 	EG(current_execute_data) = execute_data;
588 	zend_vm_stack_free_args(call);
589 	zend_vm_stack_free_call_frame(call);
590 
591 	if (!0) {
592 		zval_ptr_dtor(ret);
593 	}
594 
595 	if (UNEXPECTED(EG(exception) != NULL)) {
596 		zend_rethrow_exception(execute_data);
597 		HANDLE_EXCEPTION();
598 	}
599 
600 	ZEND_VM_SET_OPCODE(opline + 1);
601 	ZEND_VM_CONTINUE();
602 }
603 
604 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
605 {
606 	USE_OPLINE
607 	zend_execute_data *call = EX(call);
608 	zend_function *fbc = call->func;
609 	zval *ret;
610 	zval retval;
611 
612 	SAVE_OPLINE();
613 	EX(call) = call->prev_execute_data;
614 
615 	call->prev_execute_data = execute_data;
616 	EG(current_execute_data) = call;
617 
618 	ret = 1 ? EX_VAR(opline->result.var) : &retval;
619 	ZVAL_NULL(ret);
620 
621 	fbc->internal_function.handler(call, ret);
622 
623 #if ZEND_DEBUG
624 	ZEND_ASSERT(
625 		EG(exception) || !call->func ||
626 		!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
627 		zend_verify_internal_return_type(call->func, ret));
628 	ZEND_ASSERT(!Z_ISREF_P(ret));
629 #endif
630 
631 	EG(current_execute_data) = execute_data;
632 	zend_vm_stack_free_args(call);
633 	zend_vm_stack_free_call_frame(call);
634 
635 	if (!1) {
636 		zval_ptr_dtor(ret);
637 	}
638 
639 	if (UNEXPECTED(EG(exception) != NULL)) {
640 		zend_rethrow_exception(execute_data);
641 		HANDLE_EXCEPTION();
642 	}
643 
644 	ZEND_VM_SET_OPCODE(opline + 1);
645 	ZEND_VM_CONTINUE();
646 }
647 
648 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
649 {
650 	USE_OPLINE
651 	zend_execute_data *call = EX(call);
652 	zend_function *fbc = call->func;
653 	zval *ret;
654 
655 	SAVE_OPLINE();
656 	EX(call) = call->prev_execute_data;
657 
658 	ret = NULL;
659 	if (0) {
660 		ret = EX_VAR(opline->result.var);
661 		ZVAL_NULL(ret);
662 	}
663 
664 	call->prev_execute_data = execute_data;
665 	i_init_func_execute_data(call, &fbc->op_array, ret);
666 
667 	ZEND_VM_ENTER();
668 }
669 
670 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
671 {
672 	USE_OPLINE
673 	zend_execute_data *call = EX(call);
674 	zend_function *fbc = call->func;
675 	zval *ret;
676 
677 	SAVE_OPLINE();
678 	EX(call) = call->prev_execute_data;
679 
680 	ret = NULL;
681 	if (1) {
682 		ret = EX_VAR(opline->result.var);
683 		ZVAL_NULL(ret);
684 	}
685 
686 	call->prev_execute_data = execute_data;
687 	i_init_func_execute_data(call, &fbc->op_array, ret);
688 
689 	ZEND_VM_ENTER();
690 }
691 
692 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
693 {
694 	USE_OPLINE
695 	zend_execute_data *call = EX(call);
696 	zend_function *fbc = call->func;
697 	zval *ret;
698 
699 	SAVE_OPLINE();
700 	EX(call) = call->prev_execute_data;
701 
702 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
703 		ret = NULL;
704 		if (0) {
705 			ret = EX_VAR(opline->result.var);
706 			ZVAL_NULL(ret);
707 		}
708 
709 		call->prev_execute_data = execute_data;
710 		i_init_func_execute_data(call, &fbc->op_array, ret);
711 
712 		ZEND_VM_ENTER();
713 	} else {
714 		zval retval;
715 		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
716 
717 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
718 			zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
719 				fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
720 				fbc->common.scope ? "::" : "",
721 				ZSTR_VAL(fbc->common.function_name));
722 			if (UNEXPECTED(EG(exception) != NULL)) {
723 			    UNDEF_RESULT();
724 				HANDLE_EXCEPTION();
725 			}
726 		}
727 
728 		call->prev_execute_data = execute_data;
729 		EG(current_execute_data) = call;
730 
731 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
732 		 && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
733 			zend_vm_stack_free_call_frame(call);
734 			zend_rethrow_exception(execute_data);
735 		    UNDEF_RESULT();
736 			HANDLE_EXCEPTION();
737 		}
738 
739 		ret = 0 ? EX_VAR(opline->result.var) : &retval;
740 		ZVAL_NULL(ret);
741 
742 		fbc->internal_function.handler(call, ret);
743 
744 #if ZEND_DEBUG
745 		if (!EG(exception) && call->func) {
746 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
747 				zend_verify_internal_return_type(call->func, ret));
748 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
749 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
750 		}
751 #endif
752 
753 		EG(current_execute_data) = execute_data;
754 		zend_vm_stack_free_args(call);
755 		zend_vm_stack_free_call_frame(call);
756 
757 		if (!0) {
758 			zval_ptr_dtor(ret);
759 		}
760 	}
761 
762 	if (UNEXPECTED(EG(exception) != NULL)) {
763 		zend_rethrow_exception(execute_data);
764 		HANDLE_EXCEPTION();
765 	}
766 	ZEND_VM_SET_OPCODE(opline + 1);
767 	ZEND_VM_CONTINUE();
768 }
769 
770 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
771 {
772 	USE_OPLINE
773 	zend_execute_data *call = EX(call);
774 	zend_function *fbc = call->func;
775 	zval *ret;
776 
777 	SAVE_OPLINE();
778 	EX(call) = call->prev_execute_data;
779 
780 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
781 		ret = NULL;
782 		if (1) {
783 			ret = EX_VAR(opline->result.var);
784 			ZVAL_NULL(ret);
785 		}
786 
787 		call->prev_execute_data = execute_data;
788 		i_init_func_execute_data(call, &fbc->op_array, ret);
789 
790 		ZEND_VM_ENTER();
791 	} else {
792 		zval retval;
793 		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
794 
795 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
796 			zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
797 				fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
798 				fbc->common.scope ? "::" : "",
799 				ZSTR_VAL(fbc->common.function_name));
800 			if (UNEXPECTED(EG(exception) != NULL)) {
801 			    UNDEF_RESULT();
802 				HANDLE_EXCEPTION();
803 			}
804 		}
805 
806 		call->prev_execute_data = execute_data;
807 		EG(current_execute_data) = call;
808 
809 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
810 		 && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
811 			zend_vm_stack_free_call_frame(call);
812 			zend_rethrow_exception(execute_data);
813 		    UNDEF_RESULT();
814 			HANDLE_EXCEPTION();
815 		}
816 
817 		ret = 1 ? EX_VAR(opline->result.var) : &retval;
818 		ZVAL_NULL(ret);
819 
820 		fbc->internal_function.handler(call, ret);
821 
822 #if ZEND_DEBUG
823 		if (!EG(exception) && call->func) {
824 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
825 				zend_verify_internal_return_type(call->func, ret));
826 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
827 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
828 		}
829 #endif
830 
831 		EG(current_execute_data) = execute_data;
832 		zend_vm_stack_free_args(call);
833 		zend_vm_stack_free_call_frame(call);
834 
835 		if (!1) {
836 			zval_ptr_dtor(ret);
837 		}
838 	}
839 
840 	if (UNEXPECTED(EG(exception) != NULL)) {
841 		zend_rethrow_exception(execute_data);
842 		HANDLE_EXCEPTION();
843 	}
844 	ZEND_VM_SET_OPCODE(opline + 1);
845 	ZEND_VM_CONTINUE();
846 }
847 
848 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
849 {
850 	USE_OPLINE
851 	zend_execute_data *call = EX(call);
852 	zend_function *fbc = call->func;
853 	zend_object *object;
854 	zval *ret;
855 
856 	SAVE_OPLINE();
857 	EX(call) = call->prev_execute_data;
858 	if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) {
859 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) {
860 			zend_throw_error(NULL, "Cannot call abstract method %s::%s()", ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
861 			UNDEF_RESULT();
862 			HANDLE_EXCEPTION();
863 		}
864 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
865 			zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
866 				fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
867 				fbc->common.scope ? "::" : "",
868 				ZSTR_VAL(fbc->common.function_name));
869 			if (UNEXPECTED(EG(exception) != NULL)) {
870 				UNDEF_RESULT();
871 				HANDLE_EXCEPTION();
872 			}
873 		}
874 	}
875 
876 	LOAD_OPLINE();
877 
878 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
879 		ret = NULL;
880 		if (0) {
881 			ret = EX_VAR(opline->result.var);
882 			ZVAL_NULL(ret);
883 		}
884 
885 		call->prev_execute_data = execute_data;
886 		i_init_func_execute_data(call, &fbc->op_array, ret);
887 
888 		if (EXPECTED(zend_execute_ex == execute_ex)) {
889 			ZEND_VM_ENTER();
890 		} else {
891 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
892 			zend_execute_ex(call);
893 		}
894 	} else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
895 		zval retval;
896 
897 		call->prev_execute_data = execute_data;
898 		EG(current_execute_data) = call;
899 
900 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
901 		  && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
902 			UNDEF_RESULT();
903 			goto fcall_end;
904 		}
905 
906 		ret = 0 ? EX_VAR(opline->result.var) : &retval;
907 		ZVAL_NULL(ret);
908 
909 		if (!zend_execute_internal) {
910 			/* saves one function call if zend_execute_internal is not used */
911 			fbc->internal_function.handler(call, ret);
912 		} else {
913 			zend_execute_internal(call, ret);
914 		}
915 
916 #if ZEND_DEBUG
917 		if (!EG(exception) && call->func) {
918 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
919 				zend_verify_internal_return_type(call->func, ret));
920 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
921 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
922 		}
923 #endif
924 
925 		EG(current_execute_data) = execute_data;
926 		zend_vm_stack_free_args(call);
927 
928 		if (!0) {
929 			zval_ptr_dtor(ret);
930 		}
931 
932 	} else { /* ZEND_OVERLOADED_FUNCTION */
933 		zval retval;
934 
935 		ret = 0 ? EX_VAR(opline->result.var) : &retval;
936 
937 		call->prev_execute_data = execute_data;
938 
939 		if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
940 			UNDEF_RESULT();
941 			HANDLE_EXCEPTION();
942 		}
943 
944 		if (!0) {
945 			zval_ptr_dtor(ret);
946 		}
947 	}
948 
949 fcall_end:
950 	if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
951 		object = Z_OBJ(call->This);
952 #if 0
953 		if (UNEXPECTED(EG(exception) != NULL) && (opline->op1.num & ZEND_CALL_CTOR)) {
954 #else
955 		if (UNEXPECTED(EG(exception) != NULL) && (ZEND_CALL_INFO(call) & ZEND_CALL_CTOR)) {
956 #endif
957 			GC_REFCOUNT(object)--;
958 			zend_object_store_ctor_failed(object);
959 		}
960 		OBJ_RELEASE(object);
961 	}
962 
963 	zend_vm_stack_free_call_frame(call);
964 	if (UNEXPECTED(EG(exception) != NULL)) {
965 		zend_rethrow_exception(execute_data);
966 		HANDLE_EXCEPTION();
967 	}
968 
969 	ZEND_VM_SET_OPCODE(opline + 1);
970 	ZEND_VM_CONTINUE();
971 }
972 
973 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
974 {
975 	USE_OPLINE
976 	zend_execute_data *call = EX(call);
977 	zend_function *fbc = call->func;
978 	zend_object *object;
979 	zval *ret;
980 
981 	SAVE_OPLINE();
982 	EX(call) = call->prev_execute_data;
983 	if (UNEXPECTED((fbc->common.fn_flags & (ZEND_ACC_ABSTRACT|ZEND_ACC_DEPRECATED)) != 0)) {
984 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_ABSTRACT) != 0)) {
985 			zend_throw_error(NULL, "Cannot call abstract method %s::%s()", ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
986 			UNDEF_RESULT();
987 			HANDLE_EXCEPTION();
988 		}
989 		if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_DEPRECATED) != 0)) {
990 			zend_error(E_DEPRECATED, "Function %s%s%s() is deprecated",
991 				fbc->common.scope ? ZSTR_VAL(fbc->common.scope->name) : "",
992 				fbc->common.scope ? "::" : "",
993 				ZSTR_VAL(fbc->common.function_name));
994 			if (UNEXPECTED(EG(exception) != NULL)) {
995 				UNDEF_RESULT();
996 				HANDLE_EXCEPTION();
997 			}
998 		}
999 	}
1000 
1001 	LOAD_OPLINE();
1002 
1003 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
1004 		ret = NULL;
1005 		if (1) {
1006 			ret = EX_VAR(opline->result.var);
1007 			ZVAL_NULL(ret);
1008 		}
1009 
1010 		call->prev_execute_data = execute_data;
1011 		i_init_func_execute_data(call, &fbc->op_array, ret);
1012 
1013 		if (EXPECTED(zend_execute_ex == execute_ex)) {
1014 			ZEND_VM_ENTER();
1015 		} else {
1016 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
1017 			zend_execute_ex(call);
1018 		}
1019 	} else if (EXPECTED(fbc->type < ZEND_USER_FUNCTION)) {
1020 		zval retval;
1021 
1022 		call->prev_execute_data = execute_data;
1023 		EG(current_execute_data) = call;
1024 
1025 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
1026 		  && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
1027 			UNDEF_RESULT();
1028 			goto fcall_end;
1029 		}
1030 
1031 		ret = 1 ? EX_VAR(opline->result.var) : &retval;
1032 		ZVAL_NULL(ret);
1033 
1034 		if (!zend_execute_internal) {
1035 			/* saves one function call if zend_execute_internal is not used */
1036 			fbc->internal_function.handler(call, ret);
1037 		} else {
1038 			zend_execute_internal(call, ret);
1039 		}
1040 
1041 #if ZEND_DEBUG
1042 		if (!EG(exception) && call->func) {
1043 			ZEND_ASSERT(!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
1044 				zend_verify_internal_return_type(call->func, ret));
1045 			ZEND_ASSERT((call->func->common.fn_flags & ZEND_ACC_RETURN_REFERENCE)
1046 				? Z_ISREF_P(ret) : !Z_ISREF_P(ret));
1047 		}
1048 #endif
1049 
1050 		EG(current_execute_data) = execute_data;
1051 		zend_vm_stack_free_args(call);
1052 
1053 		if (!1) {
1054 			zval_ptr_dtor(ret);
1055 		}
1056 
1057 	} else { /* ZEND_OVERLOADED_FUNCTION */
1058 		zval retval;
1059 
1060 		ret = 1 ? EX_VAR(opline->result.var) : &retval;
1061 
1062 		call->prev_execute_data = execute_data;
1063 
1064 		if (UNEXPECTED(!zend_do_fcall_overloaded(call, ret))) {
1065 			UNDEF_RESULT();
1066 			HANDLE_EXCEPTION();
1067 		}
1068 
1069 		if (!1) {
1070 			zval_ptr_dtor(ret);
1071 		}
1072 	}
1073 
1074 fcall_end:
1075 	if (UNEXPECTED(ZEND_CALL_INFO(call) & ZEND_CALL_RELEASE_THIS)) {
1076 		object = Z_OBJ(call->This);
1077 #if 0
1078 		if (UNEXPECTED(EG(exception) != NULL) && (opline->op1.num & ZEND_CALL_CTOR)) {
1079 #else
1080 		if (UNEXPECTED(EG(exception) != NULL) && (ZEND_CALL_INFO(call) & ZEND_CALL_CTOR)) {
1081 #endif
1082 			GC_REFCOUNT(object)--;
1083 			zend_object_store_ctor_failed(object);
1084 		}
1085 		OBJ_RELEASE(object);
1086 	}
1087 
1088 	zend_vm_stack_free_call_frame(call);
1089 	if (UNEXPECTED(EG(exception) != NULL)) {
1090 		zend_rethrow_exception(execute_data);
1091 		HANDLE_EXCEPTION();
1092 	}
1093 
1094 	ZEND_VM_SET_OPCODE(opline + 1);
1095 	ZEND_VM_CONTINUE();
1096 }
1097 
1098 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_CREATE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1099 {
1100 	zval *return_value = EX(return_value);
1101 
1102 	if (EXPECTED(return_value)) {
1103 		USE_OPLINE
1104 		zend_generator *generator;
1105 		zend_execute_data *gen_execute_data;
1106 		uint32_t num_args, used_stack, call_info;
1107 
1108 		object_init_ex(return_value, zend_ce_generator);
1109 
1110 		/*
1111 		 * Normally the execute_data is allocated on the VM stack (because it does
1112 		 * not actually do any allocation and thus is faster). For generators
1113 		 * though this behavior would be suboptimal, because the (rather large)
1114 		 * structure would have to be copied back and forth every time execution is
1115 		 * suspended or resumed. That's why for generators the execution context
1116 		 * is allocated on heap.
1117 		 */
1118 		num_args = EX_NUM_ARGS();
1119 		if (EXPECTED(num_args <= EX(func)->op_array.num_args)) {
1120 			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var + EX(func)->op_array.T) * sizeof(zval);
1121 			gen_execute_data = (zend_execute_data*)emalloc(used_stack);
1122 			used_stack = (ZEND_CALL_FRAME_SLOT + EX(func)->op_array.last_var) * sizeof(zval);
1123 		} else {
1124 			used_stack = (ZEND_CALL_FRAME_SLOT + num_args + EX(func)->op_array.last_var + EX(func)->op_array.T - EX(func)->op_array.num_args) * sizeof(zval);
1125 			gen_execute_data = (zend_execute_data*)emalloc(used_stack);
1126 		}
1127 		memcpy(gen_execute_data, execute_data, used_stack);
1128 
1129 		/* Save execution context in generator object. */
1130 		generator = (zend_generator *) Z_OBJ_P(EX(return_value));
1131 		generator->execute_data = gen_execute_data;
1132 		generator->frozen_call_stack = NULL;
1133 		generator->execute_fake.opline = NULL;
1134 		generator->execute_fake.func = NULL;
1135 		generator->execute_fake.prev_execute_data = NULL;
1136 		ZVAL_OBJ(&generator->execute_fake.This, (zend_object *) generator);
1137 
1138 		gen_execute_data->opline = opline + 1;
1139 		/* EX(return_value) keeps pointer to zend_object (not a real zval) */
1140 		gen_execute_data->return_value = (zval*)generator;
1141 		call_info = Z_TYPE_INFO(EX(This));
1142 		if ((call_info & Z_TYPE_MASK) == IS_OBJECT
1143 		 && (!(call_info & ((ZEND_CALL_CLOSURE|ZEND_CALL_RELEASE_THIS) << ZEND_CALL_INFO_SHIFT))
1144 			 /* Bug #72523 */
1145 			|| UNEXPECTED(zend_execute_ex != execute_ex))) {
1146 			ZEND_ADD_CALL_FLAG_EX(call_info, ZEND_CALL_RELEASE_THIS);
1147 			Z_ADDREF(gen_execute_data->This);
1148 		}
1149 		ZEND_ADD_CALL_FLAG_EX(call_info, (ZEND_CALL_TOP_FUNCTION | ZEND_CALL_ALLOCATED | ZEND_CALL_GENERATOR));
1150 		Z_TYPE_INFO(gen_execute_data->This) = call_info;
1151 		gen_execute_data->prev_execute_data = NULL;
1152 
1153 		call_info = EX_CALL_INFO();
1154 		EG(current_execute_data) = EX(prev_execute_data);
1155 		if (EXPECTED(!(call_info & (ZEND_CALL_TOP|ZEND_CALL_ALLOCATED)))) {
1156 			EG(vm_stack_top) = (zval*)execute_data;
1157 			execute_data = EX(prev_execute_data);
1158 			LOAD_NEXT_OPLINE();
1159 			ZEND_VM_LEAVE();
1160 		} else if (EXPECTED(!(call_info & ZEND_CALL_TOP))) {
1161 			zend_execute_data *old_execute_data = execute_data;
1162 			execute_data = EX(prev_execute_data);
1163 			zend_vm_stack_free_call_frame_ex(call_info, old_execute_data);
1164 			LOAD_NEXT_OPLINE();
1165 			ZEND_VM_LEAVE();
1166 		} else {
1167 			ZEND_VM_RETURN();
1168 		}
1169 	} else {
1170 		ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
1171 	}
1172 }
1173 
1174 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1175 {
1176 	USE_OPLINE
1177 	zend_free_op free_op1;
1178 	zval *args;
1179 	int arg_num;
1180 
1181 	SAVE_OPLINE();
1182 	args = get_zval_ptr_undef(opline->op1_type, opline->op1, &free_op1, BP_VAR_R);
1183 	arg_num = ZEND_CALL_NUM_ARGS(EX(call)) + 1;
1184 
1185 send_again:
1186 	if (EXPECTED(Z_TYPE_P(args) == IS_ARRAY)) {
1187 		HashTable *ht = Z_ARRVAL_P(args);
1188 		zval *arg, *top;
1189 		zend_string *name;
1190 
1191 		zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, zend_hash_num_elements(ht));
1192 
1193 		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_REFCOUNT_P(args) > 1) {
1194 			uint32_t i;
1195 			int separate = 0;
1196 
1197 			/* check if any of arguments are going to be passed by reference */
1198 			for (i = 0; i < zend_hash_num_elements(ht); i++) {
1199 				if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num + i)) {
1200 					separate = 1;
1201 					break;
1202 				}
1203 			}
1204 			if (separate) {
1205 				SEPARATE_ARRAY(args);
1206 				ht = Z_ARRVAL_P(args);
1207 			}
1208 		}
1209 
1210 		ZEND_HASH_FOREACH_STR_KEY_VAL(ht, name, arg) {
1211 			if (name) {
1212 				zend_throw_error(NULL, "Cannot unpack array with string keys");
1213 				FREE_OP(free_op1);
1214 				HANDLE_EXCEPTION();
1215 			}
1216 
1217 			top = ZEND_CALL_ARG(EX(call), arg_num);
1218 			if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1219 				if (Z_REFCOUNT_P(args) == 1) {
1220 					ZVAL_MAKE_REF(arg);
1221 					Z_ADDREF_P(arg);
1222 					ZVAL_REF(top, Z_REF_P(arg));
1223 				} else {
1224 					ZVAL_DUP(top, arg);
1225 				}
1226 			} else if (Z_ISREF_P(arg)) {
1227 				ZVAL_COPY(top, Z_REFVAL_P(arg));
1228 			} else {
1229 				ZVAL_COPY(top, arg);
1230 			}
1231 
1232 			ZEND_CALL_NUM_ARGS(EX(call))++;
1233 			arg_num++;
1234 		} ZEND_HASH_FOREACH_END();
1235 
1236 	} else if (EXPECTED(Z_TYPE_P(args) == IS_OBJECT)) {
1237 		zend_class_entry *ce = Z_OBJCE_P(args);
1238 		zend_object_iterator *iter;
1239 
1240 		if (!ce || !ce->get_iterator) {
1241 			zend_error(E_WARNING, "Only arrays and Traversables can be unpacked");
1242 		} else {
1243 
1244 			iter = ce->get_iterator(ce, args, 0);
1245 			if (UNEXPECTED(!iter)) {
1246 				FREE_OP(free_op1);
1247 				if (!EG(exception)) {
1248 					zend_throw_exception_ex(
1249 						NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name)
1250 					);
1251 				}
1252 				HANDLE_EXCEPTION();
1253 			}
1254 
1255 			if (iter->funcs->rewind) {
1256 				iter->funcs->rewind(iter);
1257 			}
1258 
1259 			for (; iter->funcs->valid(iter) == SUCCESS; ++arg_num) {
1260 				zval *arg, *top;
1261 
1262 				if (UNEXPECTED(EG(exception) != NULL)) {
1263 					break;
1264 				}
1265 
1266 				arg = iter->funcs->get_current_data(iter);
1267 				if (UNEXPECTED(EG(exception) != NULL)) {
1268 					break;
1269 				}
1270 
1271 				if (iter->funcs->get_current_key) {
1272 					zval key;
1273 					iter->funcs->get_current_key(iter, &key);
1274 					if (UNEXPECTED(EG(exception) != NULL)) {
1275 						break;
1276 					}
1277 
1278 					if (Z_TYPE(key) == IS_STRING) {
1279 						zend_throw_error(NULL,
1280 							"Cannot unpack Traversable with string keys");
1281 						zend_string_release(Z_STR(key));
1282 						break;
1283 					}
1284 
1285 					zval_dtor(&key);
1286 				}
1287 
1288 				if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1289 					zend_error(
1290 						E_WARNING, "Cannot pass by-reference argument %d of %s%s%s()"
1291 						" by unpacking a Traversable, passing by-value instead", arg_num,
1292 						EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
1293 						EX(call)->func->common.scope ? "::" : "",
1294 						ZSTR_VAL(EX(call)->func->common.function_name)
1295 					);
1296 				}
1297 
1298 				ZVAL_DEREF(arg);
1299 				Z_TRY_ADDREF_P(arg);
1300 
1301 				zend_vm_stack_extend_call_frame(&EX(call), arg_num - 1, 1);
1302 				top = ZEND_CALL_ARG(EX(call), arg_num);
1303 				ZVAL_COPY_VALUE(top, arg);
1304 				ZEND_CALL_NUM_ARGS(EX(call))++;
1305 
1306 				iter->funcs->move_forward(iter);
1307 			}
1308 
1309 			zend_iterator_dtor(iter);
1310 		}
1311 	} else if (EXPECTED(Z_ISREF_P(args))) {
1312 		args = Z_REFVAL_P(args);
1313 		goto send_again;
1314 	} else {
1315 		if (opline->op1_type == IS_CV && UNEXPECTED(Z_TYPE_P(args) == IS_UNDEF)) {
1316 			GET_OP1_UNDEF_CV(args, BP_VAR_R);
1317 		}
1318 		zend_error(E_WARNING, "Only arrays and Traversables can be unpacked");
1319 	}
1320 
1321 	FREE_OP(free_op1);
1322 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1323 }
1324 
1325 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_ARRAY_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1326 {
1327 	USE_OPLINE
1328 	zend_free_op free_op1;
1329 	zval *args;
1330 
1331 	SAVE_OPLINE();
1332 	args = get_zval_ptr(opline->op1_type, opline->op1, &free_op1, BP_VAR_R);
1333 
1334 	if (UNEXPECTED(Z_TYPE_P(args) != IS_ARRAY)) {
1335 		if ((opline->op1_type & (IS_VAR|IS_CV)) && Z_ISREF_P(args)) {
1336 			args = Z_REFVAL_P(args);
1337 			if (EXPECTED(Z_TYPE_P(args) == IS_ARRAY)) {
1338 				goto send_array;
1339 			}
1340 		}
1341 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "call_user_func_array() expects parameter 2 to be array, %s given", zend_get_type_by_const(Z_TYPE_P(args)));
1342 		if (ZEND_CALL_INFO(EX(call)) & ZEND_CALL_CLOSURE) {
1343 			OBJ_RELEASE((zend_object*)EX(call)->func->common.prototype);
1344 		}
1345 		if (Z_TYPE(EX(call)->This) == IS_OBJECT) {
1346 			OBJ_RELEASE(Z_OBJ(EX(call)->This));
1347 		}
1348 		EX(call)->func = (zend_function*)&zend_pass_function;
1349 		Z_OBJ(EX(call)->This) = NULL;
1350 		ZEND_SET_CALL_INFO(EX(call), 0, ZEND_CALL_INFO(EX(call)) & ~ZEND_CALL_RELEASE_THIS);
1351 		FREE_UNFETCHED_OP(opline->op2_type, opline->op2.var);
1352 	} else {
1353 		uint32_t arg_num;
1354 		HashTable *ht;
1355 		zval *arg, *param;
1356 
1357 
1358 send_array:
1359 		ht = Z_ARRVAL_P(args);
1360 		if (opline->op2_type != IS_UNUSED) {
1361 			zend_free_op free_op2;
1362 			zval *op2 = get_zval_ptr_deref(opline->op2_type, opline->op2, &free_op2, BP_VAR_R);
1363 			uint32_t skip = opline->extended_value;
1364 			uint32_t count = zend_hash_num_elements(ht);
1365 			zend_long len = zval_get_long(op2);
1366 
1367 			if (len < 0) {
1368 				len += (zend_long)(count - skip);
1369 			}
1370 			if (skip < count && len > 0) {
1371 				if (len > (zend_long)(count - skip)) {
1372 					len = (zend_long)(count - skip);
1373 				}
1374 				zend_vm_stack_extend_call_frame(&EX(call), 0, len);
1375 				arg_num = 1;
1376 				param = ZEND_CALL_ARG(EX(call), 1);
1377 				ZEND_HASH_FOREACH_VAL(ht, arg) {
1378 					if (skip > 0) {
1379 						skip--;
1380 						continue;
1381 					} else if ((zend_long)(arg_num - 1) >= len) {
1382 						break;
1383 					} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1384 						if (UNEXPECTED(!Z_ISREF_P(arg))) {
1385 							if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1386 								/* By-value send is not allowed -- emit a warning,
1387 								 * but still perform the call. */
1388 								zend_error(E_WARNING,
1389 									"Parameter %d to %s%s%s() expected to be a reference, value given",
1390 									arg_num,
1391 									EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
1392 									EX(call)->func->common.scope ? "::" : "",
1393 									ZSTR_VAL(EX(call)->func->common.function_name));
1394 
1395 							}
1396 						}
1397 					} else {
1398 						if (Z_ISREF_P(arg) &&
1399 						    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
1400 							/* don't separate references for __call */
1401 							arg = Z_REFVAL_P(arg);
1402 						}
1403 					}
1404 					ZVAL_COPY(param, arg);
1405 					ZEND_CALL_NUM_ARGS(EX(call))++;
1406 					arg_num++;
1407 					param++;
1408 				} ZEND_HASH_FOREACH_END();
1409 			}
1410 			FREE_OP(free_op2);
1411 		} else {
1412 			zend_vm_stack_extend_call_frame(&EX(call), 0, zend_hash_num_elements(ht));
1413 			arg_num = 1;
1414 			param = ZEND_CALL_ARG(EX(call), 1);
1415 			ZEND_HASH_FOREACH_VAL(ht, arg) {
1416 				if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1417 					if (UNEXPECTED(!Z_ISREF_P(arg))) {
1418 						if (!ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
1419 							/* By-value send is not allowed -- emit a warning,
1420 							 * but still perform the call. */
1421 							zend_error(E_WARNING,
1422 								"Parameter %d to %s%s%s() expected to be a reference, value given",
1423 								arg_num,
1424 								EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
1425 								EX(call)->func->common.scope ? "::" : "",
1426 								ZSTR_VAL(EX(call)->func->common.function_name));
1427 
1428 						}
1429 					}
1430 				} else {
1431 					if (Z_ISREF_P(arg) &&
1432 					    !(EX(call)->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
1433 						/* don't separate references for __call */
1434 						arg = Z_REFVAL_P(arg);
1435 					}
1436 				}
1437 				ZVAL_COPY(param, arg);
1438 				ZEND_CALL_NUM_ARGS(EX(call))++;
1439 				arg_num++;
1440 				param++;
1441 			} ZEND_HASH_FOREACH_END();
1442 		}
1443 	}
1444 	FREE_OP(free_op1);
1445 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1446 }
1447 
1448 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1449 {
1450 	USE_OPLINE
1451 	uint32_t arg_num = opline->op1.num;
1452 
1453 	if (UNEXPECTED(arg_num > EX_NUM_ARGS())) {
1454 		SAVE_OPLINE();
1455 		zend_missing_arg_error(execute_data);
1456 		HANDLE_EXCEPTION();
1457 	} else if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
1458 		zval *param = _get_zval_ptr_cv_undef_BP_VAR_W(opline->result.var EXECUTE_DATA_CC);
1459 
1460 		SAVE_OPLINE();
1461 		if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num)) || EG(exception))) {
1462 			HANDLE_EXCEPTION();
1463 		}
1464 	}
1465 
1466 	ZEND_VM_NEXT_OPCODE();
1467 }
1468 
1469 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_VARIADIC_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1470 {
1471 	USE_OPLINE
1472 	uint32_t arg_num = opline->op1.num;
1473 	uint32_t arg_count = EX_NUM_ARGS();
1474 	zval *params;
1475 
1476 	SAVE_OPLINE();
1477 
1478 	params = _get_zval_ptr_cv_undef_BP_VAR_W(opline->result.var EXECUTE_DATA_CC);
1479 
1480 	if (arg_num <= arg_count) {
1481 		zval *param;
1482 
1483 		array_init_size(params, arg_count - arg_num + 1);
1484 		zend_hash_real_init(Z_ARRVAL_P(params), 1);
1485 		ZEND_HASH_FILL_PACKED(Z_ARRVAL_P(params)) {
1486 			param = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T);
1487 			if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
1488 				do {
1489 					zend_verify_arg_type(EX(func), arg_num, param, NULL, CACHE_ADDR(opline->op2.num));
1490 					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
1491 					ZEND_HASH_FILL_ADD(param);
1492 					param++;
1493 				} while (++arg_num <= arg_count);
1494 			} else {
1495 				do {
1496 					if (Z_OPT_REFCOUNTED_P(param)) Z_ADDREF_P(param);
1497 					ZEND_HASH_FILL_ADD(param);
1498 					param++;
1499 				} while (++arg_num <= arg_count);
1500 			}
1501 		} ZEND_HASH_FILL_END();
1502 	} else {
1503 		array_init(params);
1504 	}
1505 
1506 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1507 }
1508 
1509 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1510 {
1511 	USE_OPLINE
1512 
1513 	ZVAL_LONG(EX_VAR(opline->result.var), EG(error_reporting));
1514 
1515 	if (EG(error_reporting)) {
1516 		do {
1517 			EG(error_reporting) = 0;
1518 			if (!EG(error_reporting_ini_entry)) {
1519 				zend_ini_entry *p = zend_hash_find_ptr(EG(ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING));
1520 				if (p) {
1521 					EG(error_reporting_ini_entry) = p;
1522 				} else {
1523 					break;
1524 				}
1525 			}
1526 			if (!EG(error_reporting_ini_entry)->modified) {
1527 				if (!EG(modified_ini_directives)) {
1528 					ALLOC_HASHTABLE(EG(modified_ini_directives));
1529 					zend_hash_init(EG(modified_ini_directives), 8, NULL, NULL, 0);
1530 				}
1531 				if (EXPECTED(zend_hash_add_ptr(EG(modified_ini_directives), ZSTR_KNOWN(ZEND_STR_ERROR_REPORTING), EG(error_reporting_ini_entry)) != NULL)) {
1532 					EG(error_reporting_ini_entry)->orig_value = EG(error_reporting_ini_entry)->value;
1533 					EG(error_reporting_ini_entry)->orig_modifiable = EG(error_reporting_ini_entry)->modifiable;
1534 					EG(error_reporting_ini_entry)->modified = 1;
1535 				}
1536 			}
1537 		} while (0);
1538 	}
1539 	ZEND_VM_NEXT_OPCODE();
1540 }
1541 
1542 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1543 {
1544 	USE_OPLINE
1545 
1546 	if (!EG(no_extensions)) {
1547 		SAVE_OPLINE();
1548 		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_statement_handler, execute_data);
1549 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1550 	}
1551 	ZEND_VM_NEXT_OPCODE();
1552 }
1553 
1554 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1555 {
1556 	USE_OPLINE
1557 
1558 	if (!EG(no_extensions)) {
1559 		SAVE_OPLINE();
1560 		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_begin_handler, execute_data);
1561 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1562 	}
1563 	ZEND_VM_NEXT_OPCODE();
1564 }
1565 
1566 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_FCALL_END_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1567 {
1568 	USE_OPLINE
1569 
1570 	if (!EG(no_extensions)) {
1571 		SAVE_OPLINE();
1572 		zend_llist_apply_with_argument(&zend_extensions, (llist_apply_with_arg_func_t) zend_extension_fcall_end_handler, execute_data);
1573 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1574 	}
1575 	ZEND_VM_NEXT_OPCODE();
1576 }
1577 
1578 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1579 {
1580 	USE_OPLINE
1581 
1582 	SAVE_OPLINE();
1583 	Z_CE_P(EX_VAR(opline->result.var)) = do_bind_class(&EX(func)->op_array, opline, EG(class_table), 0);
1584 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1585 }
1586 
1587 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1588 {
1589 	zend_class_entry *ce;
1590 	USE_OPLINE
1591 
1592 	SAVE_OPLINE();
1593 	ce = zend_hash_find_ptr(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op1)));
1594 	Z_CE_P(EX_VAR(opline->result.var)) = ce;
1595 	ZEND_ASSERT(ce != NULL);
1596 
1597 	if (ce->ce_flags & ZEND_ACC_ANON_BOUND) {
1598 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
1599 		ZEND_VM_CONTINUE();
1600 	}
1601 
1602 	if (!(ce->ce_flags & (ZEND_ACC_INTERFACE|ZEND_ACC_IMPLEMENT_INTERFACES|ZEND_ACC_IMPLEMENT_TRAITS))) {
1603 		zend_verify_abstract_class(ce);
1604 	}
1605 	ce->ce_flags |= ZEND_ACC_ANON_BOUND;
1606 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1607 }
1608 
1609 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_FUNCTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1610 {
1611 	USE_OPLINE
1612 
1613 	SAVE_OPLINE();
1614 	do_bind_function(&EX(func)->op_array, opline, EG(function_table), 0);
1615 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1616 }
1617 
1618 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TICKS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1619 {
1620 	USE_OPLINE
1621 
1622 	if ((uint32_t)++EG(ticks_count) >= opline->extended_value) {
1623 		EG(ticks_count) = 0;
1624 		if (zend_ticks_function) {
1625 			SAVE_OPLINE();
1626 			zend_ticks_function(opline->extended_value);
1627 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1628 		}
1629 	}
1630 	ZEND_VM_NEXT_OPCODE();
1631 }
1632 
1633 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXT_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1634 {
1635 	USE_OPLINE
1636 
1637 	ZEND_VM_NEXT_OPCODE();
1638 }
1639 
1640 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1641 {
1642 	USE_OPLINE
1643 
1644 	ZEND_VM_NEXT_OPCODE();
1645 }
1646 
1647 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1648 {
1649 	USE_OPLINE
1650 	zend_class_entry *ce = Z_CE_P(EX_VAR(opline->op1.var));
1651 	zend_class_entry *trait;
1652 
1653 	SAVE_OPLINE();
1654 	trait = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
1655 	if (UNEXPECTED(trait == NULL)) {
1656 		trait = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)),
1657 		                                 EX_CONSTANT(opline->op2) + 1,
1658 		                                 ZEND_FETCH_CLASS_TRAIT);
1659 		if (UNEXPECTED(trait == NULL)) {
1660 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1661 		}
1662 		if (!(trait->ce_flags & ZEND_ACC_TRAIT)) {
1663 			zend_error_noreturn(E_ERROR, "%s cannot use %s - it is not a trait", ZSTR_VAL(ce->name), ZSTR_VAL(trait->name));
1664 		}
1665 		CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), trait);
1666 	}
1667 
1668 	zend_do_implement_trait(ce, trait);
1669 
1670 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1671 }
1672 
1673 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_TRAITS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1674 {
1675 	USE_OPLINE
1676 	zend_class_entry *ce = Z_CE_P(EX_VAR(opline->op1.var));
1677 
1678 	SAVE_OPLINE();
1679 	zend_do_bind_traits(ce);
1680 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1681 }
1682 
1683 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_dispatch_try_catch_finally_helper_SPEC(uint32_t try_catch_offset, uint32_t op_num ZEND_OPCODE_HANDLER_ARGS_DC)
1684 {
1685 	/* May be NULL during generator closing (only finally blocks are executed) */
1686 	zend_object *ex = EG(exception);
1687 
1688 	/* Walk try/catch/finally structures upwards, performing the necessary actions */
1689 	while (try_catch_offset != (uint32_t) -1) {
1690 		zend_try_catch_element *try_catch =
1691 			&EX(func)->op_array.try_catch_array[try_catch_offset];
1692 
1693 		if (op_num < try_catch->catch_op && ex) {
1694 			/* Go to catch block */
1695 			cleanup_live_vars(execute_data, op_num, try_catch->catch_op);
1696 			ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[try_catch->catch_op]);
1697 			ZEND_VM_CONTINUE();
1698 
1699 		} else if (op_num < try_catch->finally_op) {
1700 			/* Go to finally block */
1701 			zval *fast_call = EX_VAR(EX(func)->op_array.opcodes[try_catch->finally_end].op1.var);
1702 			cleanup_live_vars(execute_data, op_num, try_catch->finally_op);
1703 			Z_OBJ_P(fast_call) = EG(exception);
1704 			EG(exception) = NULL;
1705 			fast_call->u2.lineno = (uint32_t)-1;
1706 			ZEND_VM_SET_OPCODE(&EX(func)->op_array.opcodes[try_catch->finally_op]);
1707 			ZEND_VM_CONTINUE();
1708 
1709 		} else if (op_num < try_catch->finally_end) {
1710 			zval *fast_call = EX_VAR(EX(func)->op_array.opcodes[try_catch->finally_end].op1.var);
1711 
1712 			/* cleanup incomplete RETURN statement */
1713 			if (fast_call->u2.lineno != (uint32_t)-1
1714 			 && (EX(func)->op_array.opcodes[fast_call->u2.lineno].op2_type & (IS_TMP_VAR | IS_VAR))) {
1715 				zval *return_value = EX_VAR(EX(func)->op_array.opcodes[fast_call->u2.lineno].op2.var);
1716 
1717 				zval_ptr_dtor(return_value);
1718 			}
1719 
1720 			/* Chain potential exception from wrapping finally block */
1721 			if (Z_OBJ_P(fast_call)) {
1722 				if (ex) {
1723 					zend_exception_set_previous(ex, Z_OBJ_P(fast_call));
1724 				} else {
1725 					EG(exception) = Z_OBJ_P(fast_call);
1726 				}
1727 				ex = Z_OBJ_P(fast_call);
1728 			}
1729 		}
1730 
1731 		try_catch_offset--;
1732 	}
1733 
1734 	/* Uncaught exception */
1735 	cleanup_live_vars(execute_data, op_num, 0);
1736 	if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
1737 		zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
1738 		zend_generator_close(generator, 1);
1739 		ZEND_VM_RETURN();
1740 	} else {
1741 		ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
1742 	}
1743 }
1744 
1745 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1746 {
1747 	const zend_op *throw_op = EG(opline_before_exception);
1748 	uint32_t throw_op_num = throw_op - EX(func)->op_array.opcodes;
1749 	int i, current_try_catch_offset = -1;
1750 
1751 	{
1752 		const zend_op *exc_opline = EG(opline_before_exception);
1753 		if ((exc_opline->opcode == ZEND_FREE || exc_opline->opcode == ZEND_FE_FREE)
1754 			&& exc_opline->extended_value & ZEND_FREE_ON_RETURN) {
1755 			/* exceptions thrown because of loop var destruction on return/break/...
1756 			 * are logically thrown at the end of the foreach loop, so adjust the
1757 			 * throw_op_num.
1758 			 */
1759 			throw_op_num = EX(func)->op_array.live_range[exc_opline->op2.num].end;
1760 		}
1761 	}
1762 
1763 	/* Find the innermost try/catch/finally the exception was thrown in */
1764 	for (i = 0; i < EX(func)->op_array.last_try_catch; i++) {
1765 		zend_try_catch_element *try_catch = &EX(func)->op_array.try_catch_array[i];
1766 		if (try_catch->try_op > throw_op_num) {
1767 			/* further blocks will not be relevant... */
1768 			break;
1769 		}
1770 		if (throw_op_num < try_catch->catch_op || throw_op_num < try_catch->finally_end) {
1771 			current_try_catch_offset = i;
1772 		}
1773 	}
1774 
1775 	cleanup_unfinished_calls(execute_data, throw_op_num);
1776 
1777 	if (throw_op->result_type & (IS_VAR | IS_TMP_VAR)) {
1778 		switch (throw_op->opcode) {
1779 			case ZEND_ADD_ARRAY_ELEMENT:
1780 			case ZEND_ROPE_INIT:
1781 			case ZEND_ROPE_ADD:
1782 				break; /* exception while building structures, live range handling will free those */
1783 
1784 			case ZEND_FETCH_CLASS:
1785 			case ZEND_DECLARE_CLASS:
1786 			case ZEND_DECLARE_INHERITED_CLASS:
1787 			case ZEND_DECLARE_ANON_CLASS:
1788 			case ZEND_DECLARE_ANON_INHERITED_CLASS:
1789 				break; /* return value is zend_class_entry pointer */
1790 
1791 			default:
1792 				zval_ptr_dtor_nogc(EX_VAR(throw_op->result.var));
1793 		}
1794 	}
1795 
1796 	ZEND_VM_TAIL_CALL(zend_dispatch_try_catch_finally_helper_SPEC(current_try_catch_offset, throw_op_num ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
1797 }
1798 
1799 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1800 {
1801 	USE_OPLINE
1802 
1803 	SAVE_OPLINE();
1804 	zend_verify_abstract_class(Z_CE_P(EX_VAR(opline->op1.var)));
1805 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1806 }
1807 
1808 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_USER_OPCODE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1809 {
1810 	USE_OPLINE
1811 	int ret;
1812 
1813 	SAVE_OPLINE();
1814 	ret = zend_user_opcode_handlers[opline->opcode](execute_data);
1815 	opline = EX(opline);
1816 
1817 	switch (ret) {
1818 		case ZEND_USER_OPCODE_CONTINUE:
1819 			ZEND_VM_CONTINUE();
1820 		case ZEND_USER_OPCODE_RETURN:
1821 			if (UNEXPECTED((EX_CALL_INFO() & ZEND_CALL_GENERATOR) != 0)) {
1822 				zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
1823 				zend_generator_close(generator, 1);
1824 				ZEND_VM_RETURN();
1825 			} else {
1826 				ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
1827 			}
1828 		case ZEND_USER_OPCODE_ENTER:
1829 			ZEND_VM_ENTER();
1830 		case ZEND_USER_OPCODE_LEAVE:
1831 			ZEND_VM_LEAVE();
1832 		case ZEND_USER_OPCODE_DISPATCH:
1833 			ZEND_VM_DISPATCH(opline->opcode, opline);
1834 		default:
1835 			ZEND_VM_DISPATCH((zend_uchar)(ret & 0xff), opline);
1836 	}
1837 }
1838 
1839 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DISCARD_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1840 {
1841 	USE_OPLINE
1842 	zval *fast_call = EX_VAR(opline->op1.var);
1843 	SAVE_OPLINE();
1844 
1845 	/* cleanup incomplete RETURN statement */
1846 	if (fast_call->u2.lineno != (uint32_t)-1
1847 	 && (EX(func)->op_array.opcodes[fast_call->u2.lineno].op2_type & (IS_TMP_VAR | IS_VAR))) {
1848 		zval *return_value = EX_VAR(EX(func)->op_array.opcodes[fast_call->u2.lineno].op2.var);
1849 
1850 		zval_ptr_dtor(return_value);
1851 	}
1852 
1853 	/* cleanup delayed exception */
1854 	if (Z_OBJ_P(fast_call) != NULL) {
1855 		/* discard the previously thrown exception */
1856 		OBJ_RELEASE(Z_OBJ_P(fast_call));
1857 		Z_OBJ_P(fast_call) = NULL;
1858 	}
1859 
1860 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
1861 }
1862 
1863 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1864 {
1865 	USE_OPLINE
1866 	zval *fast_call = EX_VAR(opline->result.var);
1867 
1868 	Z_OBJ_P(fast_call) = NULL;
1869 	/* set return address */
1870 	fast_call->u2.lineno = opline - EX(func)->op_array.opcodes;
1871 	ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op1));
1872 	ZEND_VM_CONTINUE();
1873 }
1874 
1875 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_RET_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1876 {
1877 	USE_OPLINE
1878 	zval *fast_call = EX_VAR(opline->op1.var);
1879 	uint32_t current_try_catch_offset, current_op_num;
1880 
1881 	if (fast_call->u2.lineno != (uint32_t)-1) {
1882 		const zend_op *fast_ret = EX(func)->op_array.opcodes + fast_call->u2.lineno;
1883 
1884 		ZEND_VM_SET_OPCODE(fast_ret + 1);
1885 		ZEND_VM_CONTINUE();
1886 	}
1887 
1888 	/* special case for unhandled exceptions */
1889 	EG(exception) = Z_OBJ_P(fast_call);
1890 	Z_OBJ_P(fast_call) = NULL;
1891 	current_try_catch_offset = opline->op2.num;
1892 	current_op_num = opline - EX(func)->op_array.opcodes;
1893 	ZEND_VM_TAIL_CALL(zend_dispatch_try_catch_finally_helper_SPEC(current_try_catch_offset, current_op_num ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
1894 }
1895 
1896 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSERT_CHECK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1897 {
1898 	USE_OPLINE
1899 
1900 	if (EG(assertions) <= 0) {
1901 		zend_op *target = OP_JMP_ADDR(opline, opline->op2);
1902 		if (RETURN_VALUE_USED(opline)) {
1903 			ZVAL_TRUE(EX_VAR(opline->result.var));
1904 		}
1905 		ZEND_VM_SET_OPCODE(target);
1906 		ZEND_VM_CONTINUE();
1907 	} else {
1908 		ZEND_VM_NEXT_OPCODE();
1909 	}
1910 }
1911 
1912 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_NAME_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1913 {
1914 	uint32_t fetch_type;
1915 	zend_class_entry *called_scope, *scope;
1916 	USE_OPLINE
1917 
1918 	fetch_type = opline->extended_value;
1919 
1920 	scope = EX(func)->op_array.scope;
1921 	if (UNEXPECTED(scope == NULL)) {
1922 		SAVE_OPLINE();
1923 		zend_throw_error(NULL, "Cannot use \"%s\" when no class scope is active",
1924 			fetch_type == ZEND_FETCH_CLASS_SELF ? "self" :
1925 			fetch_type == ZEND_FETCH_CLASS_PARENT ? "parent" : "static");
1926 		ZVAL_UNDEF(EX_VAR(opline->result.var));
1927 		HANDLE_EXCEPTION();
1928 	}
1929 
1930 	switch (fetch_type) {
1931 		case ZEND_FETCH_CLASS_SELF:
1932 			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->name);
1933 			break;
1934 		case ZEND_FETCH_CLASS_PARENT:
1935 			if (UNEXPECTED(scope->parent == NULL)) {
1936 				SAVE_OPLINE();
1937 				zend_throw_error(NULL,
1938 					"Cannot use \"parent\" when current class scope has no parent");
1939 				ZVAL_UNDEF(EX_VAR(opline->result.var));
1940 				HANDLE_EXCEPTION();
1941 			}
1942 			ZVAL_STR_COPY(EX_VAR(opline->result.var), scope->parent->name);
1943 			break;
1944 		case ZEND_FETCH_CLASS_STATIC:
1945 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
1946 				called_scope = Z_OBJCE(EX(This));
1947 			} else {
1948 				called_scope = Z_CE(EX(This));
1949 			}
1950 			ZVAL_STR_COPY(EX_VAR(opline->result.var), called_scope->name);
1951 			break;
1952 		EMPTY_SWITCH_DEFAULT_CASE()
1953 	}
1954 	ZEND_VM_NEXT_OPCODE();
1955 }
1956 
1957 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CALL_TRAMPOLINE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
1958 {
1959 	zend_array *args;
1960 	zend_function *fbc = EX(func);
1961 	zval *ret = EX(return_value);
1962 	uint32_t call_info = EX_CALL_INFO() & (ZEND_CALL_NESTED | ZEND_CALL_TOP | ZEND_CALL_RELEASE_THIS);
1963 	uint32_t num_args = EX_NUM_ARGS();
1964 	zend_execute_data *call;
1965 	USE_OPLINE
1966 
1967 	SAVE_OPLINE();
1968 
1969 	args = emalloc(sizeof(zend_array));
1970 	zend_hash_init(args, num_args, NULL, ZVAL_PTR_DTOR, 0);
1971 	if (num_args) {
1972 		zval *p = ZEND_CALL_ARG(execute_data, 1);
1973 		zval *end = p + num_args;
1974 
1975 		zend_hash_real_init(args, 1);
1976 		ZEND_HASH_FILL_PACKED(args) {
1977 			do {
1978 				ZEND_HASH_FILL_ADD(p);
1979 				p++;
1980 			} while (p != end);
1981 		} ZEND_HASH_FILL_END();
1982 	}
1983 
1984 	call = execute_data;
1985 	execute_data = EG(current_execute_data) = EX(prev_execute_data);
1986 
1987 	ZEND_ASSERT(zend_vm_calc_used_stack(2, fbc->common.prototype) <= (size_t)(((char*)EG(vm_stack_end)) - (char*)call));
1988 
1989 	call->func = fbc->common.prototype;
1990 	ZEND_CALL_NUM_ARGS(call) = 2;
1991 
1992 	ZVAL_STR(ZEND_CALL_ARG(call, 1), fbc->common.function_name);
1993 	ZVAL_ARR(ZEND_CALL_ARG(call, 2), args);
1994 	zend_free_trampoline(fbc);
1995 	fbc = call->func;
1996 
1997 	if (EXPECTED(fbc->type == ZEND_USER_FUNCTION)) {
1998 		if (UNEXPECTED(!fbc->op_array.run_time_cache)) {
1999 			init_func_run_time_cache(&fbc->op_array);
2000 		}
2001 		i_init_func_execute_data(call, &fbc->op_array, ret);
2002 		if (EXPECTED(zend_execute_ex == execute_ex)) {
2003 			ZEND_VM_ENTER();
2004 		} else {
2005 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
2006 			zend_execute_ex(call);
2007 		}
2008 	} else {
2009 		zval retval;
2010 
2011 		ZEND_ASSERT(fbc->type == ZEND_INTERNAL_FUNCTION);
2012 
2013 		EG(current_execute_data) = call;
2014 
2015 		if (UNEXPECTED(fbc->common.fn_flags & ZEND_ACC_HAS_TYPE_HINTS)
2016 		 && UNEXPECTED(!zend_verify_internal_arg_types(fbc, call))) {
2017 			zend_vm_stack_free_call_frame(call);
2018 			if (ret) {
2019 				ZVAL_UNDEF(ret);
2020 			}
2021 			goto call_trampoline_end;
2022 		}
2023 
2024 		if (ret == NULL) {
2025 			ZVAL_NULL(&retval);
2026 			ret = &retval;
2027 		}
2028 
2029 		if (!zend_execute_internal) {
2030 			/* saves one function call if zend_execute_internal is not used */
2031 			fbc->internal_function.handler(call, ret);
2032 		} else {
2033 			zend_execute_internal(call, ret);
2034 		}
2035 
2036 #if ZEND_DEBUG
2037 		ZEND_ASSERT(
2038 			EG(exception) || !call->func ||
2039 			!(call->func->common.fn_flags & ZEND_ACC_HAS_RETURN_TYPE) ||
2040 			zend_verify_internal_return_type(call->func, ret));
2041 #endif
2042 
2043 		EG(current_execute_data) = call->prev_execute_data;
2044 
2045 		zend_vm_stack_free_args(call);
2046 
2047 		if (ret == &retval) {
2048 			zval_ptr_dtor(ret);
2049 		}
2050 	}
2051 
2052 call_trampoline_end:
2053 	execute_data = EG(current_execute_data);
2054 
2055 	if (!EX(func) || !ZEND_USER_CODE(EX(func)->type) || (call_info & ZEND_CALL_TOP)) {
2056 		ZEND_VM_RETURN();
2057 	}
2058 
2059 	opline = EX(opline);
2060 
2061 	if (UNEXPECTED(call_info & ZEND_CALL_RELEASE_THIS)) {
2062 		zend_object *object = Z_OBJ(call->This);
2063 		OBJ_RELEASE(object);
2064 	}
2065 	zend_vm_stack_free_call_frame(call);
2066 
2067 	if (UNEXPECTED(EG(exception) != NULL)) {
2068 		zend_rethrow_exception(execute_data);
2069 		HANDLE_EXCEPTION_LEAVE();
2070 	}
2071 
2072 	ZEND_VM_INC_OPCODE();
2073 	ZEND_VM_LEAVE();
2074 }
2075 
2076 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_interrupt_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
2077 {
2078 	EG(vm_interrupt) = 0;
2079 	if (EG(timed_out)) {
2080 		zend_timeout(0);
2081 	} else if (zend_interrupt_function) {
2082 		SAVE_OPLINE();
2083 		zend_interrupt_function(execute_data);
2084 		ZEND_VM_ENTER();
2085 	}
2086 	ZEND_VM_CONTINUE();
2087 }
2088 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2089 {
2090 	USE_OPLINE
2091 
2092 	SAVE_OPLINE();
2093 	if (IS_CONST == IS_UNUSED) {
2094 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->extended_value);
2095 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2096 	} else {
2097 
2098 		zval *class_name = EX_CONSTANT(opline->op2);
2099 
2100 try_class_name:
2101 		if (IS_CONST == IS_CONST) {
2102 			zend_class_entry *ce = CACHED_PTR(Z_CACHE_SLOT_P(class_name));
2103 
2104 			if (UNEXPECTED(ce == NULL)) {
2105 				ce = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value);
2106 				CACHE_PTR(Z_CACHE_SLOT_P(class_name), ce);
2107 			}
2108 			Z_CE_P(EX_VAR(opline->result.var)) = ce;
2109 		} else if (Z_TYPE_P(class_name) == IS_OBJECT) {
2110 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
2111 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
2112 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->extended_value);
2113 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
2114 			class_name = Z_REFVAL_P(class_name);
2115 			goto try_class_name;
2116 		} else {
2117 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
2118 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
2119 				if (UNEXPECTED(EG(exception) != NULL)) {
2120 					HANDLE_EXCEPTION();
2121 				}
2122 			}
2123 			zend_throw_error(NULL, "Class name must be a valid object or a string");
2124 		}
2125 
2126 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2127 	}
2128 }
2129 
2130 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2131 {
2132 	USE_OPLINE
2133 	zend_function *fbc;
2134 	zval *function_name, *func;
2135 	zend_execute_data *call;
2136 
2137 	function_name = (zval*)EX_CONSTANT(opline->op2);
2138 	fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name));
2139 	if (UNEXPECTED(fbc == NULL)) {
2140 		func = zend_hash_find(EG(function_table), Z_STR_P(function_name+1));
2141 		if (UNEXPECTED(func == NULL)) {
2142 			SAVE_OPLINE();
2143 			zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(function_name));
2144 			HANDLE_EXCEPTION();
2145 		}
2146 		fbc = Z_FUNC_P(func);
2147 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
2148 			init_func_run_time_cache(&fbc->op_array);
2149 		}
2150 		CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
2151 	}
2152 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
2153 		fbc, opline->extended_value, NULL, NULL);
2154 	call->prev_execute_data = EX(call);
2155 	EX(call) = call;
2156 
2157 	ZEND_VM_NEXT_OPCODE();
2158 }
2159 
2160 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2161 {
2162 	USE_OPLINE
2163 
2164 	zval *function_name;
2165 	zend_execute_data *call;
2166 
2167 	SAVE_OPLINE();
2168 	function_name = EX_CONSTANT(opline->op2);
2169 
2170 try_function_name:
2171 	if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2172 		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
2173 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
2174 		call = zend_init_dynamic_call_object(function_name, opline->extended_value);
2175 	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
2176 		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
2177 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
2178 		function_name = Z_REFVAL_P(function_name);
2179 		goto try_function_name;
2180 	} else {
2181 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
2182 			GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
2183 			if (UNEXPECTED(EG(exception) != NULL)) {
2184 				HANDLE_EXCEPTION();
2185 			}
2186 		}
2187 		zend_throw_error(NULL, "Function name must be a string");
2188 		call = NULL;
2189 	}
2190 
2191 	if (UNEXPECTED(!call)) {
2192 		HANDLE_EXCEPTION();
2193 	}
2194 
2195 	if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
2196 		if (UNEXPECTED(EG(exception))) {
2197 			if (call) {
2198 				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
2199 					zend_string_release(call->func->common.function_name);
2200 					zend_free_trampoline(call->func);
2201 				}
2202 				zend_vm_stack_free_call_frame(call);
2203 			}
2204 			HANDLE_EXCEPTION();
2205 		}
2206 	} else if (UNEXPECTED(!call)) {
2207 		HANDLE_EXCEPTION();
2208 	}
2209 
2210 	call->prev_execute_data = EX(call);
2211 	EX(call) = call;
2212 
2213 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2214 }
2215 
2216 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2217 {
2218 	USE_OPLINE
2219 	zval *func_name;
2220 	zval *func;
2221 	zend_function *fbc;
2222 	zend_execute_data *call;
2223 
2224 	func_name = EX_CONSTANT(opline->op2) + 1;
2225 	fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
2226 	if (UNEXPECTED(fbc == NULL)) {
2227 		func = zend_hash_find(EG(function_table), Z_STR_P(func_name));
2228 		if (func == NULL) {
2229 			func_name++;
2230 			func = zend_hash_find(EG(function_table), Z_STR_P(func_name));
2231 			if (UNEXPECTED(func == NULL)) {
2232 				SAVE_OPLINE();
2233 				zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(EX_CONSTANT(opline->op2)));
2234 				HANDLE_EXCEPTION();
2235 			}
2236 		}
2237 		fbc = Z_FUNC_P(func);
2238 		CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), fbc);
2239 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
2240 			init_func_run_time_cache(&fbc->op_array);
2241 		}
2242 	}
2243 
2244 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
2245 		fbc, opline->extended_value, NULL, NULL);
2246 	call->prev_execute_data = EX(call);
2247 	EX(call) = call;
2248 
2249 	ZEND_VM_NEXT_OPCODE();
2250 }
2251 
2252 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2253 {
2254 	USE_OPLINE
2255 
2256 	zval *fname = EX_CONSTANT(opline->op2);
2257 	zval *func;
2258 	zend_function *fbc;
2259 	zend_execute_data *call;
2260 
2261 	fbc = CACHED_PTR(Z_CACHE_SLOT_P(fname));
2262 	if (UNEXPECTED(fbc == NULL)) {
2263 		func = zend_hash_find(EG(function_table), Z_STR_P(fname));
2264 		if (UNEXPECTED(func == NULL)) {
2265 		    SAVE_OPLINE();
2266 			zend_throw_error(NULL, "Call to undefined function %s()", Z_STRVAL_P(fname));
2267 			HANDLE_EXCEPTION();
2268 		}
2269 		fbc = Z_FUNC_P(func);
2270 		CACHE_PTR(Z_CACHE_SLOT_P(fname), fbc);
2271 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
2272 			init_func_run_time_cache(&fbc->op_array);
2273 		}
2274 	}
2275 
2276 	call = zend_vm_stack_push_call_frame_ex(
2277 		opline->op1.num, ZEND_CALL_NESTED_FUNCTION,
2278 		fbc, opline->extended_value, NULL, NULL);
2279 	call->prev_execute_data = EX(call);
2280 	EX(call) = call;
2281 
2282 	ZEND_VM_NEXT_OPCODE();
2283 }
2284 
2285 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2286 {
2287 	USE_OPLINE
2288 	uint32_t arg_num;
2289 	zval *param;
2290 
2291 	ZEND_VM_REPEATABLE_OPCODE
2292 
2293 	arg_num = opline->op1.num;
2294 	param = _get_zval_ptr_cv_undef_BP_VAR_W(opline->result.var EXECUTE_DATA_CC);
2295 	if (arg_num > EX_NUM_ARGS()) {
2296 		ZVAL_COPY(param, EX_CONSTANT(opline->op2));
2297 		if (Z_OPT_CONSTANT_P(param)) {
2298 			SAVE_OPLINE();
2299 			if (UNEXPECTED(zval_update_constant_ex(param, EX(func)->op_array.scope) != SUCCESS)) {
2300 				zval_ptr_dtor(param);
2301 				ZVAL_UNDEF(param);
2302 				HANDLE_EXCEPTION();
2303 			}
2304 		}
2305 	}
2306 
2307 	if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) != 0)) {
2308 		zval *default_value = EX_CONSTANT(opline->op2);
2309 
2310 		SAVE_OPLINE();
2311 		if (UNEXPECTED(!zend_verify_arg_type(EX(func), arg_num, param, default_value, CACHE_ADDR(Z_CACHE_SLOT_P(default_value))) || EG(exception))) {
2312 			HANDLE_EXCEPTION();
2313 		}
2314 	}
2315 
2316 	ZEND_VM_REPEAT_OPCODE(ZEND_RECV_INIT);
2317 	ZEND_VM_NEXT_OPCODE();
2318 }
2319 
2320 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2321 {
2322 	USE_OPLINE
2323 	zend_class_entry *ce = Z_CE_P(EX_VAR(opline->op1.var));
2324 	zend_class_entry *iface;
2325 
2326 	SAVE_OPLINE();
2327 	iface = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
2328 	if (UNEXPECTED(iface == NULL)) {
2329 		iface = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_INTERFACE);
2330 		if (UNEXPECTED(iface == NULL)) {
2331 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2332 		}
2333 		CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), iface);
2334 	}
2335 
2336 	if (UNEXPECTED((iface->ce_flags & ZEND_ACC_INTERFACE) == 0)) {
2337 		zend_error_noreturn(E_ERROR, "%s cannot implement %s - it is not an interface", ZSTR_VAL(ce->name), ZSTR_VAL(iface->name));
2338 	}
2339 	zend_do_implement_interface(ce, iface);
2340 
2341 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2342 }
2343 
2344 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_INHERITED_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2345 {
2346 	USE_OPLINE
2347 
2348 	SAVE_OPLINE();
2349 	Z_CE_P(EX_VAR(opline->result.var)) = do_bind_inherited_class(&EX(func)->op_array, opline, EG(class_table), Z_CE_P(EX_VAR(opline->op2.var)), 0);
2350 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2351 }
2352 
2353 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2354 {
2355 	USE_OPLINE
2356 	zval *zce, *orig_zce;
2357 
2358 	SAVE_OPLINE();
2359 	if ((zce = zend_hash_find(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op1)))) == NULL ||
2360 	    ((orig_zce = zend_hash_find(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op1)+1))) != NULL &&
2361 	     Z_CE_P(zce) != Z_CE_P(orig_zce))) {
2362 		do_bind_inherited_class(&EX(func)->op_array, opline, EG(class_table), Z_CE_P(EX_VAR(opline->op2.var)), 0);
2363 	}
2364 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2365 }
2366 
2367 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2368 {
2369 	zend_class_entry *ce;
2370 	USE_OPLINE
2371 
2372 	SAVE_OPLINE();
2373 	ce = zend_hash_find_ptr(EG(class_table), Z_STR_P(EX_CONSTANT(opline->op1)));
2374 	Z_CE_P(EX_VAR(opline->result.var)) = ce;
2375 	ZEND_ASSERT(ce != NULL);
2376 
2377 	if (ce->ce_flags & ZEND_ACC_ANON_BOUND) {
2378 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
2379 		ZEND_VM_CONTINUE();
2380 	}
2381 
2382 	zend_do_inheritance(ce, Z_CE_P(EX_VAR(opline->op2.var)));
2383 	ce->ce_flags |= ZEND_ACC_ANON_BOUND;
2384 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2385 }
2386 
2387 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2388 {
2389 	USE_OPLINE
2390 
2391 	SAVE_OPLINE();
2392 	if (IS_UNUSED == IS_UNUSED) {
2393 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->extended_value);
2394 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2395 	} else {
2396 
2397 		zval *class_name = NULL;
2398 
2399 try_class_name:
2400 		if (IS_UNUSED == IS_CONST) {
2401 			zend_class_entry *ce = CACHED_PTR(Z_CACHE_SLOT_P(class_name));
2402 
2403 			if (UNEXPECTED(ce == NULL)) {
2404 				ce = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value);
2405 				CACHE_PTR(Z_CACHE_SLOT_P(class_name), ce);
2406 			}
2407 			Z_CE_P(EX_VAR(opline->result.var)) = ce;
2408 		} else if (Z_TYPE_P(class_name) == IS_OBJECT) {
2409 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
2410 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
2411 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->extended_value);
2412 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
2413 			class_name = Z_REFVAL_P(class_name);
2414 			goto try_class_name;
2415 		} else {
2416 			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
2417 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
2418 				if (UNEXPECTED(EG(exception) != NULL)) {
2419 					HANDLE_EXCEPTION();
2420 				}
2421 			}
2422 			zend_throw_error(NULL, "Class name must be a valid object or a string");
2423 		}
2424 
2425 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2426 	}
2427 }
2428 
2429 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2430 {
2431 	USE_OPLINE
2432 
2433 	SAVE_OPLINE();
2434 	if (IS_CV == IS_UNUSED) {
2435 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->extended_value);
2436 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2437 	} else {
2438 
2439 		zval *class_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
2440 
2441 try_class_name:
2442 		if (IS_CV == IS_CONST) {
2443 			zend_class_entry *ce = CACHED_PTR(Z_CACHE_SLOT_P(class_name));
2444 
2445 			if (UNEXPECTED(ce == NULL)) {
2446 				ce = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value);
2447 				CACHE_PTR(Z_CACHE_SLOT_P(class_name), ce);
2448 			}
2449 			Z_CE_P(EX_VAR(opline->result.var)) = ce;
2450 		} else if (Z_TYPE_P(class_name) == IS_OBJECT) {
2451 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
2452 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
2453 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->extended_value);
2454 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
2455 			class_name = Z_REFVAL_P(class_name);
2456 			goto try_class_name;
2457 		} else {
2458 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
2459 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
2460 				if (UNEXPECTED(EG(exception) != NULL)) {
2461 					HANDLE_EXCEPTION();
2462 				}
2463 			}
2464 			zend_throw_error(NULL, "Class name must be a valid object or a string");
2465 		}
2466 
2467 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2468 	}
2469 }
2470 
2471 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2472 {
2473 	USE_OPLINE
2474 
2475 	zval *function_name;
2476 	zend_execute_data *call;
2477 
2478 	SAVE_OPLINE();
2479 	function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
2480 
2481 try_function_name:
2482 	if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2483 		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
2484 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
2485 		call = zend_init_dynamic_call_object(function_name, opline->extended_value);
2486 	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
2487 		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
2488 	} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
2489 		function_name = Z_REFVAL_P(function_name);
2490 		goto try_function_name;
2491 	} else {
2492 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
2493 			GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
2494 			if (UNEXPECTED(EG(exception) != NULL)) {
2495 				HANDLE_EXCEPTION();
2496 			}
2497 		}
2498 		zend_throw_error(NULL, "Function name must be a string");
2499 		call = NULL;
2500 	}
2501 
2502 	if (UNEXPECTED(!call)) {
2503 		HANDLE_EXCEPTION();
2504 	}
2505 
2506 	if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
2507 		if (UNEXPECTED(EG(exception))) {
2508 			if (call) {
2509 				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
2510 					zend_string_release(call->func->common.function_name);
2511 					zend_free_trampoline(call->func);
2512 				}
2513 				zend_vm_stack_free_call_frame(call);
2514 			}
2515 			HANDLE_EXCEPTION();
2516 		}
2517 	} else if (UNEXPECTED(!call)) {
2518 		HANDLE_EXCEPTION();
2519 	}
2520 
2521 	call->prev_execute_data = EX(call);
2522 	EX(call) = call;
2523 
2524 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2525 }
2526 
2527 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2528 {
2529 	USE_OPLINE
2530 
2531 	SAVE_OPLINE();
2532 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
2533 		Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(NULL, opline->extended_value);
2534 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2535 	} else {
2536 		zend_free_op free_op2;
2537 		zval *class_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
2538 
2539 try_class_name:
2540 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
2541 			zend_class_entry *ce = CACHED_PTR(Z_CACHE_SLOT_P(class_name));
2542 
2543 			if (UNEXPECTED(ce == NULL)) {
2544 				ce = zend_fetch_class_by_name(Z_STR_P(class_name), EX_CONSTANT(opline->op2) + 1, opline->extended_value);
2545 				CACHE_PTR(Z_CACHE_SLOT_P(class_name), ce);
2546 			}
2547 			Z_CE_P(EX_VAR(opline->result.var)) = ce;
2548 		} else if (Z_TYPE_P(class_name) == IS_OBJECT) {
2549 			Z_CE_P(EX_VAR(opline->result.var)) = Z_OBJCE_P(class_name);
2550 		} else if (Z_TYPE_P(class_name) == IS_STRING) {
2551 			Z_CE_P(EX_VAR(opline->result.var)) = zend_fetch_class(Z_STR_P(class_name), opline->extended_value);
2552 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(class_name) == IS_REFERENCE) {
2553 			class_name = Z_REFVAL_P(class_name);
2554 			goto try_class_name;
2555 		} else {
2556 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(class_name) == IS_UNDEF)) {
2557 				GET_OP2_UNDEF_CV(class_name, BP_VAR_R);
2558 				if (UNEXPECTED(EG(exception) != NULL)) {
2559 					HANDLE_EXCEPTION();
2560 				}
2561 			}
2562 			zend_throw_error(NULL, "Class name must be a valid object or a string");
2563 		}
2564 
2565 		zval_ptr_dtor_nogc(free_op2);
2566 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2567 	}
2568 }
2569 
2570 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2571 {
2572 	USE_OPLINE
2573 	zend_free_op free_op2;
2574 	zval *function_name;
2575 	zend_execute_data *call;
2576 
2577 	SAVE_OPLINE();
2578 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
2579 
2580 try_function_name:
2581 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
2582 		call = zend_init_dynamic_call_string(Z_STR_P(function_name), opline->extended_value);
2583 	} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(function_name) == IS_OBJECT)) {
2584 		call = zend_init_dynamic_call_object(function_name, opline->extended_value);
2585 	} else if (EXPECTED(Z_TYPE_P(function_name) == IS_ARRAY)) {
2586 		call = zend_init_dynamic_call_array(Z_ARRVAL_P(function_name), opline->extended_value);
2587 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(function_name) == IS_REFERENCE)) {
2588 		function_name = Z_REFVAL_P(function_name);
2589 		goto try_function_name;
2590 	} else {
2591 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
2592 			GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
2593 			if (UNEXPECTED(EG(exception) != NULL)) {
2594 				HANDLE_EXCEPTION();
2595 			}
2596 		}
2597 		zend_throw_error(NULL, "Function name must be a string");
2598 		call = NULL;
2599 	}
2600 
2601 	if (UNEXPECTED(!call)) {
2602 		HANDLE_EXCEPTION();
2603 	}
2604 
2605 	zval_ptr_dtor_nogc(free_op2);
2606 	if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) {
2607 		if (UNEXPECTED(EG(exception))) {
2608 			if (call) {
2609 				 if (call->func->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE) {
2610 					zend_string_release(call->func->common.function_name);
2611 					zend_free_trampoline(call->func);
2612 				}
2613 				zend_vm_stack_free_call_frame(call);
2614 			}
2615 			HANDLE_EXCEPTION();
2616 		}
2617 	} else if (UNEXPECTED(!call)) {
2618 		HANDLE_EXCEPTION();
2619 	}
2620 
2621 	call->prev_execute_data = EX(call);
2622 	EX(call) = call;
2623 
2624 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2625 }
2626 
2627 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2628 {
2629 	USE_OPLINE
2630 
2631 	zval *op1;
2632 
2633 	op1 = EX_CONSTANT(opline->op1);
2634 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
2635 		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
2636 		ZEND_VM_NEXT_OPCODE();
2637 	}
2638 
2639 	SAVE_OPLINE();
2640 	bitwise_not_function(EX_VAR(opline->result.var),
2641 		EX_CONSTANT(opline->op1));
2642 
2643 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2644 }
2645 
2646 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2647 {
2648 	USE_OPLINE
2649 	zval *val;
2650 
2651 
2652 	val = EX_CONSTANT(opline->op1);
2653 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2654 		ZVAL_FALSE(EX_VAR(opline->result.var));
2655 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2656 		/* The result and op1 can be the same cv zval */
2657 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
2658 		ZVAL_TRUE(EX_VAR(opline->result.var));
2659 		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
2660 			SAVE_OPLINE();
2661 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2662 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2663 		}
2664 	} else {
2665 		SAVE_OPLINE();
2666 		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
2667 
2668 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2669 	}
2670 	ZEND_VM_NEXT_OPCODE();
2671 }
2672 
2673 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2674 {
2675 	USE_OPLINE
2676 
2677 	zval *z;
2678 
2679 	SAVE_OPLINE();
2680 	z = EX_CONSTANT(opline->op1);
2681 
2682 	if (Z_TYPE_P(z) == IS_STRING) {
2683 		zend_string *str = Z_STR_P(z);
2684 
2685 		if (ZSTR_LEN(str) != 0) {
2686 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
2687 		}
2688 	} else {
2689 		zend_string *str = _zval_get_string_func(z);
2690 
2691 		if (ZSTR_LEN(str) != 0) {
2692 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
2693 		} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
2694 			GET_OP1_UNDEF_CV(z, BP_VAR_R);
2695 		}
2696 		zend_string_release(str);
2697 	}
2698 
2699 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2700 }
2701 
2702 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2703 {
2704 	USE_OPLINE
2705 
2706 	zval *val;
2707 
2708 	val = EX_CONSTANT(opline->op1);
2709 
2710 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2711 		ZEND_VM_SET_NEXT_OPCODE(opline + 1);
2712 		ZEND_VM_CONTINUE();
2713 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2714 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2715 			SAVE_OPLINE();
2716 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2717 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
2718 		} else {
2719 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
2720 			ZEND_VM_CONTINUE();
2721 		}
2722 	}
2723 
2724 	SAVE_OPLINE();
2725 	if (i_zend_is_true(val)) {
2726 		opline++;
2727 	} else {
2728 		opline = OP_JMP_ADDR(opline, opline->op2);
2729 	}
2730 
2731 	ZEND_VM_JMP(opline);
2732 }
2733 
2734 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2735 {
2736 	USE_OPLINE
2737 
2738 	zval *val;
2739 
2740 	val = EX_CONSTANT(opline->op1);
2741 
2742 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2743 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
2744 		ZEND_VM_CONTINUE();
2745 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2746 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2747 			SAVE_OPLINE();
2748 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2749 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2750 		} else {
2751 			ZEND_VM_NEXT_OPCODE();
2752 		}
2753 	}
2754 
2755 	SAVE_OPLINE();
2756 	if (i_zend_is_true(val)) {
2757 		opline = OP_JMP_ADDR(opline, opline->op2);
2758 	} else {
2759 		opline++;
2760 	}
2761 
2762 	ZEND_VM_JMP(opline);
2763 }
2764 
2765 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2766 {
2767 	USE_OPLINE
2768 
2769 	zval *val;
2770 
2771 	val = EX_CONSTANT(opline->op1);
2772 
2773 	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
2774 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
2775 		ZEND_VM_CONTINUE();
2776 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2777 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2778 			SAVE_OPLINE();
2779 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2780 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
2781 		} else {
2782 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
2783 			ZEND_VM_CONTINUE();
2784 		}
2785 	}
2786 
2787 	SAVE_OPLINE();
2788 	if (i_zend_is_true(val)) {
2789 		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
2790 	} else {
2791 		opline = OP_JMP_ADDR(opline, opline->op2);
2792 	}
2793 
2794 	ZEND_VM_JMP(opline);
2795 }
2796 
2797 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2798 {
2799 	USE_OPLINE
2800 
2801 	zval *val;
2802 	int ret;
2803 
2804 	val = EX_CONSTANT(opline->op1);
2805 
2806 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2807 		ZVAL_TRUE(EX_VAR(opline->result.var));
2808 		ZEND_VM_NEXT_OPCODE();
2809 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2810 		ZVAL_FALSE(EX_VAR(opline->result.var));
2811 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2812 			SAVE_OPLINE();
2813 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2814 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
2815 		} else {
2816 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
2817 			ZEND_VM_CONTINUE();
2818 		}
2819 	}
2820 
2821 	SAVE_OPLINE();
2822 	ret = i_zend_is_true(val);
2823 
2824 	if (ret) {
2825 		ZVAL_TRUE(EX_VAR(opline->result.var));
2826 		opline++;
2827 	} else {
2828 		ZVAL_FALSE(EX_VAR(opline->result.var));
2829 		opline = OP_JMP_ADDR(opline, opline->op2);
2830 	}
2831 	ZEND_VM_JMP(opline);
2832 }
2833 
2834 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2835 {
2836 	USE_OPLINE
2837 
2838 	zval *val;
2839 	int ret;
2840 
2841 	val = EX_CONSTANT(opline->op1);
2842 
2843 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
2844 		ZVAL_TRUE(EX_VAR(opline->result.var));
2845 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
2846 		ZEND_VM_CONTINUE();
2847 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
2848 		ZVAL_FALSE(EX_VAR(opline->result.var));
2849 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
2850 			SAVE_OPLINE();
2851 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
2852 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
2853 		} else {
2854 			ZEND_VM_NEXT_OPCODE();
2855 		}
2856 	}
2857 
2858 	SAVE_OPLINE();
2859 	ret = i_zend_is_true(val);
2860 
2861 	if (ret) {
2862 		ZVAL_TRUE(EX_VAR(opline->result.var));
2863 		opline = OP_JMP_ADDR(opline, opline->op2);
2864 	} else {
2865 		ZVAL_FALSE(EX_VAR(opline->result.var));
2866 		opline++;
2867 	}
2868 	ZEND_VM_JMP(opline);
2869 }
2870 
2871 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2872 {
2873 	USE_OPLINE
2874 	zval *retval_ptr;
2875 	zval *return_value;
2876 	zend_free_op free_op1;
2877 
2878 	retval_ptr = EX_CONSTANT(opline->op1);
2879 	return_value = EX(return_value);
2880 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
2881 		SAVE_OPLINE();
2882 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
2883 		if (return_value) {
2884 			ZVAL_NULL(return_value);
2885 		}
2886 	} else if (!return_value) {
2887 		if (IS_CONST & (IS_VAR|IS_TMP_VAR)) {
2888 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
2889 				SAVE_OPLINE();
2890 				zval_dtor_func(Z_COUNTED_P(free_op1));
2891 			}
2892 		}
2893 	} else {
2894 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
2895 			ZVAL_COPY_VALUE(return_value, retval_ptr);
2896 			if (IS_CONST == IS_CONST) {
2897 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
2898 					Z_ADDREF_P(return_value);
2899 				}
2900 			}
2901 		} else if (IS_CONST == IS_CV) {
2902 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
2903 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
2904 					ZVAL_COPY_VALUE(return_value, retval_ptr);
2905 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
2906 						ZVAL_NULL(retval_ptr);
2907 					} else {
2908 						Z_ADDREF_P(return_value);
2909 					}
2910 				} else {
2911 					retval_ptr = Z_REFVAL_P(retval_ptr);
2912 					ZVAL_COPY(return_value, retval_ptr);
2913 				}
2914 			} else {
2915 				ZVAL_COPY_VALUE(return_value, retval_ptr);
2916 			}
2917 		} else /* if (IS_CONST == IS_VAR) */ {
2918 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
2919 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
2920 
2921 				retval_ptr = Z_REFVAL_P(retval_ptr);
2922 				ZVAL_COPY_VALUE(return_value, retval_ptr);
2923 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
2924 					efree_size(ref, sizeof(zend_reference));
2925 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
2926 					Z_ADDREF_P(retval_ptr);
2927 				}
2928 			} else {
2929 				ZVAL_COPY_VALUE(return_value, retval_ptr);
2930 			}
2931 		}
2932 	}
2933 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
2934 }
2935 
2936 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2937 {
2938 	USE_OPLINE
2939 	zval *retval_ptr;
2940 
2941 
2942 	SAVE_OPLINE();
2943 
2944 	do {
2945 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR)) ||
2946 		    (IS_CONST == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
2947 			/* Not supposed to happen, but we'll allow it */
2948 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
2949 
2950 			retval_ptr = EX_CONSTANT(opline->op1);
2951 			if (!EX(return_value)) {
2952 
2953 			} else {
2954 				if (IS_CONST == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
2955 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
2956 					break;
2957 				}
2958 
2959 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
2960 				if (IS_CONST == IS_CONST) {
2961 					if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
2962 				}
2963 			}
2964 			break;
2965 		}
2966 
2967 		retval_ptr = NULL;
2968 
2969 		if (IS_CONST == IS_VAR) {
2970 			if (retval_ptr == &EG(uninitialized_zval) ||
2971 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
2972 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
2973 				if (EX(return_value)) {
2974 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
2975 				} else {
2976 
2977 				}
2978 				break;
2979 			}
2980 		}
2981 
2982 		if (EX(return_value)) {
2983 			ZVAL_MAKE_REF(retval_ptr);
2984 			Z_ADDREF_P(retval_ptr);
2985 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
2986 		}
2987 
2988 	} while (0);
2989 
2990 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
2991 }
2992 
2993 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
2994 {
2995 	USE_OPLINE
2996 	zval *retval;
2997 
2998 
2999 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
3000 
3001 	SAVE_OPLINE();
3002 	retval = EX_CONSTANT(opline->op1);
3003 
3004 	/* Copy return value into generator->retval */
3005 	if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
3006 		ZVAL_COPY_VALUE(&generator->retval, retval);
3007 		if (IS_CONST == IS_CONST) {
3008 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
3009 				Z_ADDREF(generator->retval);
3010 			}
3011 		}
3012 	} else if (IS_CONST == IS_CV) {
3013 		ZVAL_DEREF(retval);
3014 		ZVAL_COPY(&generator->retval, retval);
3015 	} else /* if (IS_CONST == IS_VAR) */ {
3016 		if (UNEXPECTED(Z_ISREF_P(retval))) {
3017 			zend_refcounted *ref = Z_COUNTED_P(retval);
3018 
3019 			retval = Z_REFVAL_P(retval);
3020 			ZVAL_COPY_VALUE(&generator->retval, retval);
3021 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
3022 				efree_size(ref, sizeof(zend_reference));
3023 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
3024 				Z_ADDREF_P(retval);
3025 			}
3026 		} else {
3027 			ZVAL_COPY_VALUE(&generator->retval, retval);
3028 		}
3029 	}
3030 
3031 	/* Close the generator to free up resources */
3032 	zend_generator_close(generator, 1);
3033 
3034 	/* Pass execution back to handling code */
3035 	ZEND_VM_RETURN();
3036 }
3037 
3038 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3039 {
3040 	USE_OPLINE
3041 	zval *value;
3042 
3043 
3044 	SAVE_OPLINE();
3045 	value = EX_CONSTANT(opline->op1);
3046 
3047 	do {
3048 		if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
3049 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
3050 				value = Z_REFVAL_P(value);
3051 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
3052 					break;
3053 				}
3054 			}
3055 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
3056 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
3057 				if (UNEXPECTED(EG(exception) != NULL)) {
3058 					HANDLE_EXCEPTION();
3059 				}
3060 			}
3061 			zend_throw_error(NULL, "Can only throw objects");
3062 
3063 			HANDLE_EXCEPTION();
3064 		}
3065 	} while (0);
3066 
3067 	zend_exception_save();
3068 	if (IS_CONST != IS_TMP_VAR) {
3069 		if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
3070 	}
3071 
3072 	zend_throw_exception_object(value);
3073 	zend_exception_restore();
3074 
3075 	HANDLE_EXCEPTION();
3076 }
3077 
3078 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3079 {
3080 	USE_OPLINE
3081 	zval *value, *arg;
3082 
3083 
3084 	value = EX_CONSTANT(opline->op1);
3085 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3086 	ZVAL_COPY_VALUE(arg, value);
3087 	if (IS_CONST == IS_CONST) {
3088 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
3089 			Z_ADDREF_P(arg);
3090 		}
3091 	}
3092 	ZEND_VM_NEXT_OPCODE();
3093 }
3094 
3095 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3096 {
3097 	USE_OPLINE
3098 	zval *value, *arg;
3099 
3100 	uint32_t arg_num = opline->op2.num;
3101 
3102 	if (EXPECTED(0)) {
3103 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
3104 			goto send_val_by_ref;
3105 		}
3106 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
3107 send_val_by_ref:
3108 		SAVE_OPLINE();
3109 		zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
3110 
3111 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3112 		ZVAL_UNDEF(arg);
3113 		HANDLE_EXCEPTION();
3114 	}
3115 	value = EX_CONSTANT(opline->op1);
3116 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3117 	ZVAL_COPY_VALUE(arg, value);
3118 	if (IS_CONST == IS_CONST) {
3119 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
3120 			Z_ADDREF_P(arg);
3121 		}
3122 	}
3123 	ZEND_VM_NEXT_OPCODE();
3124 }
3125 
3126 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3127 {
3128 	USE_OPLINE
3129 	zval *value, *arg;
3130 
3131 	uint32_t arg_num = opline->op2.num;
3132 
3133 	if (EXPECTED(1)) {
3134 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
3135 			goto send_val_by_ref;
3136 		}
3137 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
3138 send_val_by_ref:
3139 		SAVE_OPLINE();
3140 		zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
3141 
3142 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3143 		ZVAL_UNDEF(arg);
3144 		HANDLE_EXCEPTION();
3145 	}
3146 	value = EX_CONSTANT(opline->op1);
3147 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
3148 	ZVAL_COPY_VALUE(arg, value);
3149 	if (IS_CONST == IS_CONST) {
3150 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
3151 			Z_ADDREF_P(arg);
3152 		}
3153 	}
3154 	ZEND_VM_NEXT_OPCODE();
3155 }
3156 
3157 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3158 {
3159 	USE_OPLINE
3160 	zval *arg, *param;
3161 
3162 
3163 	SAVE_OPLINE();
3164 	arg = EX_CONSTANT(opline->op1);
3165 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
3166 
3167 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
3168 		zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
3169 			opline->op2.num,
3170 			EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
3171 			EX(call)->func->common.scope ? "::" : "",
3172 			ZSTR_VAL(EX(call)->func->common.function_name));
3173 	}
3174 
3175 	ZVAL_COPY(param, arg);
3176 
3177 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3178 }
3179 
3180 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3181 {
3182 	USE_OPLINE
3183 	zval *val;
3184 
3185 
3186 	val = EX_CONSTANT(opline->op1);
3187 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
3188 		ZVAL_TRUE(EX_VAR(opline->result.var));
3189 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
3190 		/* The result and op1 can be the same cv zval */
3191 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
3192 		ZVAL_FALSE(EX_VAR(opline->result.var));
3193 		if (IS_CONST == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
3194 			SAVE_OPLINE();
3195 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
3196 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3197 		}
3198 	} else {
3199 		SAVE_OPLINE();
3200 		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
3201 
3202 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3203 	}
3204 	ZEND_VM_NEXT_OPCODE();
3205 }
3206 
3207 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NEW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3208 {
3209 	USE_OPLINE
3210 	zval *result;
3211 	zend_function *constructor;
3212 	zend_class_entry *ce;
3213 	zend_execute_data *call;
3214 
3215 	SAVE_OPLINE();
3216 	if (IS_CONST == IS_CONST) {
3217 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
3218 		if (UNEXPECTED(ce == NULL)) {
3219 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
3220 			if (UNEXPECTED(ce == NULL)) {
3221 				ZEND_ASSERT(EG(exception));
3222 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3223 				HANDLE_EXCEPTION();
3224 			}
3225 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
3226 		}
3227 	} else if (IS_CONST == IS_UNUSED) {
3228 		ce = zend_fetch_class(NULL, opline->op1.num);
3229 		if (UNEXPECTED(ce == NULL)) {
3230 			ZEND_ASSERT(EG(exception));
3231 			ZVAL_UNDEF(EX_VAR(opline->result.var));
3232 			HANDLE_EXCEPTION();
3233 		}
3234 	} else {
3235 		ce = Z_CE_P(EX_VAR(opline->op1.var));
3236 	}
3237 
3238 	result = EX_VAR(opline->result.var);
3239 	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
3240 		ZVAL_UNDEF(result);
3241 		HANDLE_EXCEPTION();
3242 	}
3243 
3244 	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
3245 	if (constructor == NULL) {
3246 		if (UNEXPECTED(EG(exception))) {
3247 			HANDLE_EXCEPTION();
3248 		}
3249 
3250 		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
3251 		 * opcode is DO_FCALL in case EXT instructions are used. */
3252 		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
3253 			ZEND_VM_NEXT_OPCODE_EX(1, 2);
3254 		}
3255 
3256 		/* Perform a dummy function call */
3257 		call = zend_vm_stack_push_call_frame(
3258 			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
3259 			opline->extended_value, NULL, NULL);
3260 	} else {
3261 		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!constructor->op_array.run_time_cache)) {
3262 			init_func_run_time_cache(&constructor->op_array);
3263 		}
3264 		/* We are not handling overloaded classes right now */
3265 		call = zend_vm_stack_push_call_frame(
3266 			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_CTOR,
3267 			constructor,
3268 			opline->extended_value,
3269 			ce,
3270 			Z_OBJ_P(result));
3271 		Z_ADDREF_P(result);
3272 	}
3273 
3274 	call->prev_execute_data = EX(call);
3275 	EX(call) = call;
3276 	ZEND_VM_NEXT_OPCODE();
3277 }
3278 
3279 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3280 {
3281 	USE_OPLINE
3282 
3283 	zval *obj;
3284 	zend_class_entry *ce, *scope;
3285 	zend_function *clone;
3286 	zend_object_clone_obj_t clone_call;
3287 
3288 	SAVE_OPLINE();
3289 	obj = EX_CONSTANT(opline->op1);
3290 
3291 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
3292 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
3293 	}
3294 
3295 	do {
3296 		if (IS_CONST == IS_CONST ||
3297 		    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
3298 		    if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
3299 		    	obj = Z_REFVAL_P(obj);
3300 		    	if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
3301 		    		break;
3302 				}
3303 			}
3304 			ZVAL_UNDEF(EX_VAR(opline->result.var));
3305 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
3306 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
3307 				if (UNEXPECTED(EG(exception) != NULL)) {
3308 					HANDLE_EXCEPTION();
3309 				}
3310 			}
3311 			zend_throw_error(NULL, "__clone method called on non-object");
3312 
3313 			HANDLE_EXCEPTION();
3314 		}
3315 	} while (0);
3316 
3317 	ce = Z_OBJCE_P(obj);
3318 	clone = ce->clone;
3319 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
3320 	if (UNEXPECTED(clone_call == NULL)) {
3321 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
3322 
3323 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3324 		HANDLE_EXCEPTION();
3325 	}
3326 
3327 	if (clone) {
3328 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
3329 			/* Ensure that if we're calling a private function, we're allowed to do so.
3330 			 */
3331 			scope = EX(func)->op_array.scope;
3332 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
3333 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
3334 
3335 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3336 				HANDLE_EXCEPTION();
3337 			}
3338 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
3339 			/* Ensure that if we're calling a protected function, we're allowed to do so.
3340 			 */
3341 			scope = EX(func)->op_array.scope;
3342 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
3343 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
3344 
3345 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3346 				HANDLE_EXCEPTION();
3347 			}
3348 		}
3349 	}
3350 
3351 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
3352 
3353 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3354 }
3355 
3356 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3357 {
3358 	USE_OPLINE
3359 
3360 	zval *expr;
3361 	zval *result = EX_VAR(opline->result.var);
3362 
3363 	SAVE_OPLINE();
3364 	expr = EX_CONSTANT(opline->op1);
3365 
3366 	switch (opline->extended_value) {
3367 		case IS_NULL:
3368 			ZVAL_NULL(result);
3369 			break;
3370 		case _IS_BOOL:
3371 			ZVAL_BOOL(result, zend_is_true(expr));
3372 			break;
3373 		case IS_LONG:
3374 			ZVAL_LONG(result, zval_get_long(expr));
3375 			break;
3376 		case IS_DOUBLE:
3377 			ZVAL_DOUBLE(result, zval_get_double(expr));
3378 			break;
3379 		case IS_STRING:
3380 			ZVAL_STR(result, zval_get_string(expr));
3381 			break;
3382 		default:
3383 			if (IS_CONST & (IS_VAR|IS_CV)) {
3384 				ZVAL_DEREF(expr);
3385 			}
3386 			/* If value is already of correct type, return it directly */
3387 			if (Z_TYPE_P(expr) == opline->extended_value) {
3388 				ZVAL_COPY_VALUE(result, expr);
3389 				if (IS_CONST == IS_CONST) {
3390 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
3391 				} else if (IS_CONST != IS_TMP_VAR) {
3392 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
3393 				}
3394 
3395 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3396 			}
3397 
3398 			if (opline->extended_value == IS_ARRAY) {
3399 				if (Z_TYPE_P(expr) != IS_OBJECT) {
3400 					ZVAL_NEW_ARR(result);
3401 					zend_hash_init(Z_ARRVAL_P(result), 8, NULL, ZVAL_PTR_DTOR, 0);
3402 					if (Z_TYPE_P(expr) != IS_NULL) {
3403 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
3404 						if (IS_CONST == IS_CONST) {
3405 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
3406 						} else {
3407 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
3408 						}
3409 					}
3410 				} else {
3411 					ZVAL_COPY_VALUE(result, expr);
3412 					Z_ADDREF_P(result);
3413 					convert_to_array(result);
3414 				}
3415 			} else {
3416 				if (Z_TYPE_P(expr) != IS_ARRAY) {
3417 					object_init(result);
3418 					if (Z_TYPE_P(expr) != IS_NULL) {
3419 						expr = zend_hash_add_new(Z_OBJPROP_P(result), ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
3420 						if (IS_CONST == IS_CONST) {
3421 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
3422 						} else {
3423 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
3424 						}
3425 					}
3426 				} else {
3427 					ZVAL_COPY(result, expr);
3428 					convert_to_object(result);
3429 				}
3430 			}
3431 	}
3432 
3433 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3434 }
3435 
3436 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3437 {
3438 	USE_OPLINE
3439 	zend_op_array *new_op_array;
3440 
3441 	zval *inc_filename;
3442 
3443 	SAVE_OPLINE();
3444 	inc_filename = EX_CONSTANT(opline->op1);
3445 	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
3446 
3447 	if (UNEXPECTED(EG(exception) != NULL)) {
3448 		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
3449 			destroy_op_array(new_op_array);
3450 			efree_size(new_op_array, sizeof(zend_op_array));
3451 		}
3452 		UNDEF_RESULT();
3453 		HANDLE_EXCEPTION();
3454 	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
3455 		if (RETURN_VALUE_USED(opline)) {
3456 			ZVAL_TRUE(EX_VAR(opline->result.var));
3457 		}
3458 	} else if (EXPECTED(new_op_array != NULL)) {
3459 		zval *return_value = NULL;
3460 		zend_execute_data *call;
3461 
3462 		if (RETURN_VALUE_USED(opline)) {
3463 			return_value = EX_VAR(opline->result.var);
3464 			ZVAL_NULL(return_value);
3465 		}
3466 
3467 		new_op_array->scope = EX(func)->op_array.scope;
3468 
3469 		call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
3470 			(zend_function*)new_op_array, 0,
3471 			Z_TYPE(EX(This)) != IS_OBJECT ? Z_CE(EX(This)) : NULL,
3472 			Z_TYPE(EX(This)) == IS_OBJECT ? Z_OBJ(EX(This)) : NULL);
3473 
3474 		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
3475 			call->symbol_table = EX(symbol_table);
3476 		} else {
3477 			call->symbol_table = zend_rebuild_symbol_table();
3478 		}
3479 
3480 		call->prev_execute_data = execute_data;
3481 		i_init_code_execute_data(call, new_op_array, return_value);
3482 		if (EXPECTED(zend_execute_ex == execute_ex)) {
3483 			ZEND_VM_ENTER();
3484 		} else {
3485 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
3486 			zend_execute_ex(call);
3487 			zend_vm_stack_free_call_frame(call);
3488 		}
3489 
3490 		destroy_op_array(new_op_array);
3491 		efree_size(new_op_array, sizeof(zend_op_array));
3492 		if (UNEXPECTED(EG(exception) != NULL)) {
3493 			zend_rethrow_exception(execute_data);
3494 			UNDEF_RESULT();
3495 			HANDLE_EXCEPTION();
3496 		}
3497 	} else if (RETURN_VALUE_USED(opline)) {
3498 		ZVAL_FALSE(EX_VAR(opline->result.var));
3499 	}
3500 	ZEND_VM_SET_OPCODE(opline + 1);
3501 	ZEND_VM_CONTINUE();
3502 }
3503 
3504 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3505 {
3506 	USE_OPLINE
3507 
3508 	zval *array_ptr, *result;
3509 
3510 	SAVE_OPLINE();
3511 
3512 	array_ptr = EX_CONSTANT(opline->op1);
3513 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
3514 		result = EX_VAR(opline->result.var);
3515 		ZVAL_COPY_VALUE(result, array_ptr);
3516 		if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
3517 			Z_ADDREF_P(array_ptr);
3518 		}
3519 		Z_FE_POS_P(result) = 0;
3520 
3521 		ZEND_VM_NEXT_OPCODE();
3522 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
3523 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
3524 			result = EX_VAR(opline->result.var);
3525 			ZVAL_COPY_VALUE(result, array_ptr);
3526 			if (IS_CONST != IS_TMP_VAR) {
3527 				Z_ADDREF_P(array_ptr);
3528 			}
3529 			if (Z_OBJ_P(array_ptr)->properties
3530 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
3531 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
3532 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
3533 				}
3534 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
3535 			}
3536 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
3537 
3538 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3539 		} else {
3540 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
3541 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 0);
3542 			zend_bool is_empty;
3543 
3544 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
3545 
3546 				if (iter) {
3547 					OBJ_RELEASE(&iter->std);
3548 				}
3549 				if (!EG(exception)) {
3550 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
3551 				}
3552 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3553 				HANDLE_EXCEPTION();
3554 			}
3555 
3556 			iter->index = 0;
3557 			if (iter->funcs->rewind) {
3558 				iter->funcs->rewind(iter);
3559 				if (UNEXPECTED(EG(exception) != NULL)) {
3560 					OBJ_RELEASE(&iter->std);
3561 
3562 					ZVAL_UNDEF(EX_VAR(opline->result.var));
3563 					HANDLE_EXCEPTION();
3564 				}
3565 			}
3566 
3567 			is_empty = iter->funcs->valid(iter) != SUCCESS;
3568 
3569 			if (UNEXPECTED(EG(exception) != NULL)) {
3570 				OBJ_RELEASE(&iter->std);
3571 
3572 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3573 				HANDLE_EXCEPTION();
3574 			}
3575 			iter->index = -1; /* will be set to 0 before using next handler */
3576 
3577 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
3578 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
3579 
3580 			if (UNEXPECTED(EG(exception))) {
3581 				HANDLE_EXCEPTION();
3582 			} else if (is_empty) {
3583 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
3584 				ZEND_VM_CONTINUE();
3585 			} else {
3586 				ZEND_VM_NEXT_OPCODE();
3587 			}
3588 		}
3589 	} else {
3590 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
3591 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3592 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
3593 
3594 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
3595 	}
3596 }
3597 
3598 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3599 {
3600 	USE_OPLINE
3601 
3602 	zval *array_ptr, *array_ref;
3603 
3604 	SAVE_OPLINE();
3605 
3606 	if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
3607 		array_ref = array_ptr = NULL;
3608 		if (Z_ISREF_P(array_ref)) {
3609 			array_ptr = Z_REFVAL_P(array_ref);
3610 		}
3611 	} else {
3612 		array_ref = array_ptr = EX_CONSTANT(opline->op1);
3613 	}
3614 
3615 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
3616 		if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
3617 			if (array_ptr == array_ref) {
3618 				ZVAL_NEW_REF(array_ref, array_ref);
3619 				array_ptr = Z_REFVAL_P(array_ref);
3620 			}
3621 			Z_ADDREF_P(array_ref);
3622 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
3623 		} else {
3624 			array_ref = EX_VAR(opline->result.var);
3625 			ZVAL_NEW_REF(array_ref, array_ptr);
3626 			array_ptr = Z_REFVAL_P(array_ref);
3627 		}
3628 		if (IS_CONST == IS_CONST) {
3629 			zval_copy_ctor_func(array_ptr);
3630 		} else {
3631 			SEPARATE_ARRAY(array_ptr);
3632 		}
3633 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
3634 
3635 		ZEND_VM_NEXT_OPCODE();
3636 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
3637 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
3638 			if (IS_CONST == IS_VAR || IS_CONST == IS_CV) {
3639 				if (array_ptr == array_ref) {
3640 					ZVAL_NEW_REF(array_ref, array_ref);
3641 					array_ptr = Z_REFVAL_P(array_ref);
3642 				}
3643 				Z_ADDREF_P(array_ref);
3644 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
3645 			} else {
3646 				array_ptr = EX_VAR(opline->result.var);
3647 				ZVAL_COPY_VALUE(array_ptr, array_ref);
3648 			}
3649 			if (Z_OBJ_P(array_ptr)->properties
3650 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
3651 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
3652 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
3653 				}
3654 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
3655 			}
3656 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
3657 
3658 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3659 		} else {
3660 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
3661 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 1);
3662 			zend_bool is_empty;
3663 
3664 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
3665 				if (IS_CONST == IS_VAR) {
3666 
3667 				} else {
3668 
3669 				}
3670 				if (!EG(exception)) {
3671 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
3672 				}
3673 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3674 				HANDLE_EXCEPTION();
3675 			}
3676 
3677 			iter->index = 0;
3678 			if (iter->funcs->rewind) {
3679 				iter->funcs->rewind(iter);
3680 				if (UNEXPECTED(EG(exception) != NULL)) {
3681 					OBJ_RELEASE(&iter->std);
3682 					if (IS_CONST == IS_VAR) {
3683 
3684 					} else {
3685 
3686 					}
3687 					ZVAL_UNDEF(EX_VAR(opline->result.var));
3688 					HANDLE_EXCEPTION();
3689 				}
3690 			}
3691 
3692 			is_empty = iter->funcs->valid(iter) != SUCCESS;
3693 
3694 			if (UNEXPECTED(EG(exception) != NULL)) {
3695 				OBJ_RELEASE(&iter->std);
3696 				if (IS_CONST == IS_VAR) {
3697 
3698 				} else {
3699 
3700 				}
3701 				ZVAL_UNDEF(EX_VAR(opline->result.var));
3702 				HANDLE_EXCEPTION();
3703 			}
3704 			iter->index = -1; /* will be set to 0 before using next handler */
3705 
3706 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
3707 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
3708 
3709 			if (IS_CONST == IS_VAR) {
3710 
3711 			} else {
3712 
3713 			}
3714 			if (UNEXPECTED(EG(exception))) {
3715 				HANDLE_EXCEPTION();
3716 			} else if (is_empty) {
3717 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
3718 				ZEND_VM_CONTINUE();
3719 			} else {
3720 				ZEND_VM_NEXT_OPCODE();
3721 			}
3722 		}
3723 	} else {
3724 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
3725 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3726 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
3727 		if (IS_CONST == IS_VAR) {
3728 
3729 		} else {
3730 
3731 		}
3732 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
3733 	}
3734 }
3735 
3736 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3737 {
3738 	USE_OPLINE
3739 
3740 	SAVE_OPLINE();
3741 	if (IS_CONST != IS_UNUSED) {
3742 
3743 		zval *ptr = EX_CONSTANT(opline->op1);
3744 
3745 		do {
3746 			if (Z_TYPE_P(ptr) == IS_LONG) {
3747 				EG(exit_status) = Z_LVAL_P(ptr);
3748 			} else {
3749 				if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
3750 					ptr = Z_REFVAL_P(ptr);
3751 					if (Z_TYPE_P(ptr) == IS_LONG) {
3752 						EG(exit_status) = Z_LVAL_P(ptr);
3753 						break;
3754 					}
3755 				}
3756 				zend_print_variable(ptr);
3757 			}
3758 		} while (0);
3759 
3760 	}
3761 	zend_bailout();
3762 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
3763 }
3764 
3765 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3766 {
3767 	USE_OPLINE
3768 
3769 	zval *value;
3770 	zval *ref = NULL;
3771 	int ret;
3772 
3773 	SAVE_OPLINE();
3774 	value = EX_CONSTANT(opline->op1);
3775 
3776 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) && Z_ISREF_P(value)) {
3777 		if (IS_CONST == IS_VAR) {
3778 			ref = value;
3779 		}
3780 		value = Z_REFVAL_P(value);
3781 	}
3782 
3783 	ret = i_zend_is_true(value);
3784 
3785 	if (UNEXPECTED(EG(exception))) {
3786 
3787 		ZVAL_UNDEF(EX_VAR(opline->result.var));
3788 		HANDLE_EXCEPTION();
3789 	}
3790 
3791 	if (ret) {
3792 		zval *result = EX_VAR(opline->result.var);
3793 
3794 		ZVAL_COPY_VALUE(result, value);
3795 		if (IS_CONST == IS_CONST) {
3796 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
3797 		} else if (IS_CONST == IS_CV) {
3798 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
3799 		} else if (IS_CONST == IS_VAR && ref) {
3800 			zend_reference *r = Z_REF_P(ref);
3801 
3802 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
3803 				efree_size(r, sizeof(zend_reference));
3804 			} else if (Z_OPT_REFCOUNTED_P(result)) {
3805 				Z_ADDREF_P(result);
3806 			}
3807 		}
3808 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
3809 		ZEND_VM_CONTINUE();
3810 	}
3811 
3812 	ZEND_VM_NEXT_OPCODE();
3813 }
3814 
3815 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3816 {
3817 	USE_OPLINE
3818 
3819 	zval *value;
3820 	zval *ref = NULL;
3821 
3822 	SAVE_OPLINE();
3823 	value = EX_CONSTANT(opline->op1);
3824 
3825 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) && Z_ISREF_P(value)) {
3826 		if (IS_CONST == IS_VAR) {
3827 			ref = value;
3828 		}
3829 		value = Z_REFVAL_P(value);
3830 	}
3831 
3832 	if (Z_TYPE_P(value) > IS_NULL) {
3833 		zval *result = EX_VAR(opline->result.var);
3834 		ZVAL_COPY_VALUE(result, value);
3835 		if (IS_CONST == IS_CONST) {
3836 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
3837 		} else if (IS_CONST == IS_CV) {
3838 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
3839 		} else if (IS_CONST == IS_VAR && ref) {
3840 			zend_reference *r = Z_REF_P(ref);
3841 
3842 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
3843 				efree_size(r, sizeof(zend_reference));
3844 			} else if (Z_OPT_REFCOUNTED_P(result)) {
3845 				Z_ADDREF_P(result);
3846 			}
3847 		}
3848 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
3849 		ZEND_VM_CONTINUE();
3850 	}
3851 
3852 	ZEND_VM_NEXT_OPCODE();
3853 }
3854 
3855 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3856 {
3857 	USE_OPLINE
3858 
3859 	zval *value;
3860 	zval *result = EX_VAR(opline->result.var);
3861 
3862 	value = EX_CONSTANT(opline->op1);
3863 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
3864 		SAVE_OPLINE();
3865 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
3866 		ZVAL_NULL(result);
3867 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
3868 	}
3869 
3870 	if (IS_CONST == IS_CV) {
3871 		ZVAL_DEREF(value);
3872 		ZVAL_COPY(result, value);
3873 	} else if (IS_CONST == IS_VAR) {
3874 		if (UNEXPECTED(Z_ISREF_P(value))) {
3875 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
3876 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
3877 				efree_size(Z_REF_P(value), sizeof(zend_reference));
3878 			} else if (Z_OPT_REFCOUNTED_P(result)) {
3879 				Z_ADDREF_P(result);
3880 			}
3881 		} else {
3882 			ZVAL_COPY_VALUE(result, value);
3883 		}
3884 	} else {
3885 		ZVAL_COPY_VALUE(result, value);
3886 		if (IS_CONST == IS_CONST) {
3887 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
3888 				Z_ADDREF_P(result);
3889 			}
3890 		}
3891 	}
3892 	ZEND_VM_NEXT_OPCODE();
3893 }
3894 
3895 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
3896 {
3897 	USE_OPLINE
3898 
3899 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
3900 
3901 	zval *val;
3902 
3903 
3904 	SAVE_OPLINE();
3905 	val = EX_CONSTANT(opline->op1);
3906 
3907 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
3908 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
3909 
3910 		UNDEF_RESULT();
3911 		HANDLE_EXCEPTION();
3912 	}
3913 
3914 	if (Z_TYPE_P(val) == IS_ARRAY) {
3915 		ZVAL_COPY_VALUE(&generator->values, val);
3916 		if (IS_CONST != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
3917 			Z_ADDREF_P(val);
3918 		}
3919 		Z_FE_POS(generator->values) = 0;
3920 
3921 	} else if (IS_CONST != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
3922 		zend_class_entry *ce = Z_OBJCE_P(val);
3923 		if (ce == zend_ce_generator) {
3924 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
3925 
3926 			if (IS_CONST != IS_TMP_VAR) {
3927 				Z_ADDREF_P(val);
3928 			}
3929 
3930 			if (Z_ISUNDEF(new_gen->retval)) {
3931 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
3932 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
3933 					zval_ptr_dtor(val);
3934 					UNDEF_RESULT();
3935 					HANDLE_EXCEPTION();
3936 				} else {
3937 					zend_generator_yield_from(generator, new_gen);
3938 				}
3939 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
3940 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
3941 				zval_ptr_dtor(val);
3942 				UNDEF_RESULT();
3943 				HANDLE_EXCEPTION();
3944 			} else {
3945 				if (RETURN_VALUE_USED(opline)) {
3946 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
3947 				}
3948 				ZEND_VM_NEXT_OPCODE();
3949 			}
3950 		} else {
3951 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
3952 
3953 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
3954 				if (!EG(exception)) {
3955 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
3956 				}
3957 				UNDEF_RESULT();
3958 				HANDLE_EXCEPTION();
3959 			}
3960 
3961 			iter->index = 0;
3962 			if (iter->funcs->rewind) {
3963 				iter->funcs->rewind(iter);
3964 				if (UNEXPECTED(EG(exception) != NULL)) {
3965 					OBJ_RELEASE(&iter->std);
3966 					UNDEF_RESULT();
3967 					HANDLE_EXCEPTION();
3968 				}
3969 			}
3970 
3971 			ZVAL_OBJ(&generator->values, &iter->std);
3972 		}
3973 	} else {
3974 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
3975 		UNDEF_RESULT();
3976 		HANDLE_EXCEPTION();
3977 	}
3978 
3979 	/* This is the default return value
3980 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
3981 	if (RETURN_VALUE_USED(opline)) {
3982 		ZVAL_NULL(EX_VAR(opline->result.var));
3983 	}
3984 
3985 	/* This generator has no send target (though the generator we delegate to might have one) */
3986 	generator->send_target = NULL;
3987 
3988 	/* We increment to the next op, so we are at the correct position when the
3989 	 * generator is resumed. */
3990 	ZEND_VM_INC_OPCODE();
3991 
3992 	/* The GOTO VM uses a local opline variable. We need to set the opline
3993 	 * variable in execute_data so we don't resume at an old position. */
3994 	SAVE_OPLINE();
3995 
3996 	ZEND_VM_RETURN();
3997 }
3998 
3999 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4000 {
4001 	USE_OPLINE
4002 	zval *value;
4003 
4004 
4005 	value = EX_CONSTANT(opline->op1);
4006 	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
4007 		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
4008 
4009 		ZEND_VM_NEXT_OPCODE();
4010 	} else {
4011 		zend_bool strict;
4012 
4013 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
4014 			value = Z_REFVAL_P(value);
4015 			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
4016 				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
4017 
4018 				ZEND_VM_NEXT_OPCODE();
4019 			}
4020 		}
4021 
4022 		SAVE_OPLINE();
4023 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
4024 			value = GET_OP1_UNDEF_CV(value, BP_VAR_R);
4025 		}
4026 		strict = EX_USES_STRICT_TYPES();
4027 		do {
4028 			if (EXPECTED(!strict)) {
4029 				zend_string *str;
4030 				zval tmp;
4031 
4032 				ZVAL_COPY(&tmp, value);
4033 				if (zend_parse_arg_str_weak(&tmp, &str)) {
4034 					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
4035 					zval_ptr_dtor(&tmp);
4036 					break;
4037 				}
4038 				zval_ptr_dtor(&tmp);
4039 			}
4040 			zend_internal_type_error(strict, "strlen() expects parameter 1 to be string, %s given", zend_get_type_by_const(Z_TYPE_P(value)));
4041 			ZVAL_NULL(EX_VAR(opline->result.var));
4042 		} while (0);
4043 	}
4044 
4045 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4046 }
4047 
4048 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4049 {
4050 	USE_OPLINE
4051 	zval *value;
4052 	int result = 0;
4053 
4054 
4055 	SAVE_OPLINE();
4056 	value = EX_CONSTANT(opline->op1);
4057 	if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
4058 		if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
4059 			const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
4060 
4061 			if (EXPECTED(type_name != NULL)) {
4062 				result = 1;
4063 			}
4064 		} else {
4065 			result = 1;
4066 		}
4067 	} else if (UNEXPECTED(opline->extended_value == _IS_BOOL) &&
4068 			   EXPECTED(Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE)) {
4069 		result = 1;
4070 	}
4071 
4072 	ZEND_VM_SMART_BRANCH(result, 1);
4073 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
4074 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4075 }
4076 
4077 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DEFINED_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4078 {
4079 	USE_OPLINE
4080 	zend_constant *c;
4081 	int result;
4082 
4083 	if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))))) {
4084 		result = 1;
4085 	} else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op1), 0)) == NULL) {
4086 		result = 0;
4087 	} else {
4088 		CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), c);
4089 		result = 1;
4090 	}
4091 	ZEND_VM_SMART_BRANCH(result, 0);
4092 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
4093 	ZEND_VM_NEXT_OPCODE();
4094 }
4095 
4096 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4097 {
4098 	USE_OPLINE
4099 
4100 	zval *value;
4101 
4102 	value = EX_CONSTANT(opline->op1);
4103 	ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(value));
4104 	ZEND_VM_NEXT_OPCODE();
4105 }
4106 
4107 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4108 {
4109 	USE_OPLINE
4110 
4111 	zval *value;
4112 
4113 	value = EX_CONSTANT(opline->op1);
4114 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
4115 	ZEND_VM_NEXT_OPCODE();
4116 }
4117 
4118 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4119 {
4120 	USE_OPLINE
4121 
4122 	zval *op1, *op2, *result;
4123 
4124 	op1 = EX_CONSTANT(opline->op1);
4125 	op2 = EX_CONSTANT(opline->op2);
4126 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4127 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4128 			result = EX_VAR(opline->result.var);
4129 			fast_long_add_function(result, op1, op2);
4130 			ZEND_VM_NEXT_OPCODE();
4131 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4132 			result = EX_VAR(opline->result.var);
4133 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
4134 			ZEND_VM_NEXT_OPCODE();
4135 		}
4136 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4137 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4138 			result = EX_VAR(opline->result.var);
4139 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
4140 			ZEND_VM_NEXT_OPCODE();
4141 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4142 			result = EX_VAR(opline->result.var);
4143 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
4144 			ZEND_VM_NEXT_OPCODE();
4145 		}
4146 	}
4147 
4148 	SAVE_OPLINE();
4149 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4150 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4151 	}
4152 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4153 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4154 	}
4155 	add_function(EX_VAR(opline->result.var), op1, op2);
4156 
4157 
4158 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4159 }
4160 
4161 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4162 {
4163 	USE_OPLINE
4164 
4165 	zval *op1, *op2, *result;
4166 
4167 	op1 = EX_CONSTANT(opline->op1);
4168 	op2 = EX_CONSTANT(opline->op2);
4169 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4170 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4171 			result = EX_VAR(opline->result.var);
4172 			fast_long_sub_function(result, op1, op2);
4173 			ZEND_VM_NEXT_OPCODE();
4174 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4175 			result = EX_VAR(opline->result.var);
4176 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
4177 			ZEND_VM_NEXT_OPCODE();
4178 		}
4179 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4180 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4181 			result = EX_VAR(opline->result.var);
4182 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
4183 			ZEND_VM_NEXT_OPCODE();
4184 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4185 			result = EX_VAR(opline->result.var);
4186 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
4187 			ZEND_VM_NEXT_OPCODE();
4188 		}
4189 	}
4190 
4191 	SAVE_OPLINE();
4192 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4193 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4194 	}
4195 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4196 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4197 	}
4198 	sub_function(EX_VAR(opline->result.var), op1, op2);
4199 
4200 
4201 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4202 }
4203 
4204 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4205 {
4206 	USE_OPLINE
4207 
4208 	zval *op1, *op2, *result;
4209 
4210 	op1 = EX_CONSTANT(opline->op1);
4211 	op2 = EX_CONSTANT(opline->op2);
4212 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4213 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4214 			zend_long overflow;
4215 
4216 			result = EX_VAR(opline->result.var);
4217 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
4218 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
4219 			ZEND_VM_NEXT_OPCODE();
4220 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4221 			result = EX_VAR(opline->result.var);
4222 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
4223 			ZEND_VM_NEXT_OPCODE();
4224 		}
4225 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4226 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4227 			result = EX_VAR(opline->result.var);
4228 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
4229 			ZEND_VM_NEXT_OPCODE();
4230 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4231 			result = EX_VAR(opline->result.var);
4232 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
4233 			ZEND_VM_NEXT_OPCODE();
4234 		}
4235 	}
4236 
4237 	SAVE_OPLINE();
4238 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4239 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4240 	}
4241 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4242 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4243 	}
4244 	mul_function(EX_VAR(opline->result.var), op1, op2);
4245 
4246 
4247 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4248 }
4249 
4250 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4251 {
4252 	USE_OPLINE
4253 
4254 	zval *op1, *op2;
4255 
4256 	SAVE_OPLINE();
4257 	op1 = EX_CONSTANT(opline->op1);
4258 	op2 = EX_CONSTANT(opline->op2);
4259 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
4260 
4261 
4262 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4263 }
4264 
4265 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4266 {
4267 	USE_OPLINE
4268 
4269 	zval *op1, *op2, *result;
4270 
4271 	op1 = EX_CONSTANT(opline->op1);
4272 	op2 = EX_CONSTANT(opline->op2);
4273 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4274 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4275 			result = EX_VAR(opline->result.var);
4276 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
4277 				SAVE_OPLINE();
4278 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
4279 				ZVAL_UNDEF(EX_VAR(opline->result.var));
4280 				HANDLE_EXCEPTION();
4281 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
4282 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
4283 				ZVAL_LONG(result, 0);
4284 			} else {
4285 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
4286 			}
4287 			ZEND_VM_NEXT_OPCODE();
4288 		}
4289 	}
4290 
4291 	SAVE_OPLINE();
4292 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4293 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4294 	}
4295 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4296 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4297 	}
4298 	mod_function(EX_VAR(opline->result.var), op1, op2);
4299 
4300 
4301 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4302 }
4303 
4304 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4305 {
4306 	USE_OPLINE
4307 
4308 	zval *op1, *op2;
4309 
4310 	op1 = EX_CONSTANT(opline->op1);
4311 	op2 = EX_CONSTANT(opline->op2);
4312 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4313 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
4314 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
4315 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
4316 		ZEND_VM_NEXT_OPCODE();
4317 	}
4318 
4319 	SAVE_OPLINE();
4320 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4321 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4322 	}
4323 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4324 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4325 	}
4326 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
4327 
4328 
4329 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4330 }
4331 
4332 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4333 {
4334 	USE_OPLINE
4335 
4336 	zval *op1, *op2;
4337 
4338 	op1 = EX_CONSTANT(opline->op1);
4339 	op2 = EX_CONSTANT(opline->op2);
4340 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4341 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
4342 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
4343 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
4344 		ZEND_VM_NEXT_OPCODE();
4345 	}
4346 
4347 	SAVE_OPLINE();
4348 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4349 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4350 	}
4351 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4352 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4353 	}
4354 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
4355 
4356 
4357 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4358 }
4359 
4360 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4361 {
4362 	USE_OPLINE
4363 
4364 	zval *op1, *op2;
4365 
4366 	SAVE_OPLINE();
4367 	op1 = EX_CONSTANT(opline->op1);
4368 	op2 = EX_CONSTANT(opline->op2);
4369 	pow_function(EX_VAR(opline->result.var), op1, op2);
4370 
4371 
4372 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4373 }
4374 
4375 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4376 {
4377 	USE_OPLINE
4378 
4379 	zval *op1, *op2;
4380 
4381 	op1 = EX_CONSTANT(opline->op1);
4382 	op2 = EX_CONSTANT(opline->op2);
4383 
4384 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
4385 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
4386 		zend_string *op1_str = Z_STR_P(op1);
4387 		zend_string *op2_str = Z_STR_P(op2);
4388 		zend_string *str;
4389 
4390 		do {
4391 			if (IS_CONST != IS_CONST) {
4392 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
4393 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
4394 
4395 					break;
4396 				}
4397 			}
4398 			if (IS_CONST != IS_CONST) {
4399 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
4400 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
4401 
4402 					break;
4403 				}
4404 			}
4405 			if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
4406 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
4407 			    size_t len = ZSTR_LEN(op1_str);
4408 
4409 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
4410 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
4411 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
4412 				break;
4413 			} else {
4414 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
4415 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
4416 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
4417 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
4418 			}
4419 
4420 		} while (0);
4421 
4422 		ZEND_VM_NEXT_OPCODE();
4423 	} else {
4424 		SAVE_OPLINE();
4425 
4426 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
4427 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4428 		}
4429 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
4430 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4431 		}
4432 		concat_function(EX_VAR(opline->result.var), op1, op2);
4433 
4434 
4435 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4436 	}
4437 }
4438 
4439 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4440 {
4441 	USE_OPLINE
4442 
4443 	zval *op1, *op2;
4444 	int result;
4445 
4446 	SAVE_OPLINE();
4447 	op1 = EX_CONSTANT(opline->op1);
4448 	op2 = EX_CONSTANT(opline->op2);
4449 	result = fast_is_identical_function(op1, op2);
4450 
4451 
4452 	ZEND_VM_SMART_BRANCH(result, 1);
4453 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
4454 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4455 }
4456 
4457 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4458 {
4459 	USE_OPLINE
4460 
4461 	zval *op1, *op2;
4462 	int result;
4463 
4464 	SAVE_OPLINE();
4465 	op1 = EX_CONSTANT(opline->op1);
4466 	op2 = EX_CONSTANT(opline->op2);
4467 	result = fast_is_not_identical_function(op1, op2);
4468 
4469 
4470 	ZEND_VM_SMART_BRANCH(result, 1);
4471 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
4472 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4473 }
4474 
4475 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4476 {
4477 	USE_OPLINE
4478 
4479 	zval *op1, *op2, *result;
4480 
4481 	op1 = EX_CONSTANT(opline->op1);
4482 	op2 = EX_CONSTANT(opline->op2);
4483 	do {
4484 		int result;
4485 
4486 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
4487 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4488 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
4489 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4490 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
4491 			} else {
4492 				break;
4493 			}
4494 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
4495 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4496 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
4497 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4498 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
4499 			} else {
4500 				break;
4501 			}
4502 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
4503 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
4504 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
4505 					result = 1;
4506 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
4507 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
4508 						result = 0;
4509 					} else {
4510 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
4511 					}
4512 				} else {
4513 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
4514 				}
4515 
4516 
4517 			} else {
4518 				break;
4519 			}
4520 		} else {
4521 			break;
4522 		}
4523 		ZEND_VM_SMART_BRANCH(result, 0);
4524 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4525 		ZEND_VM_NEXT_OPCODE();
4526 	} while (0);
4527 
4528 	SAVE_OPLINE();
4529 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
4530 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4531 	}
4532 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
4533 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4534 	}
4535 	result = EX_VAR(opline->result.var);
4536 	compare_function(result, op1, op2);
4537 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
4538 
4539 
4540 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4541 }
4542 
4543 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4544 {
4545 	USE_OPLINE
4546 
4547 	zval *op1, *op2, *result;
4548 
4549 	op1 = EX_CONSTANT(opline->op1);
4550 	op2 = EX_CONSTANT(opline->op2);
4551 	do {
4552 		int result;
4553 
4554 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
4555 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4556 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
4557 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4558 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
4559 			} else {
4560 				break;
4561 			}
4562 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
4563 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
4564 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
4565 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
4566 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
4567 			} else {
4568 				break;
4569 			}
4570 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
4571 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
4572 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
4573 					result = 0;
4574 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
4575 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
4576 						result = 1;
4577 					} else {
4578 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
4579 					}
4580 				} else {
4581 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
4582 				}
4583 
4584 
4585 			} else {
4586 				break;
4587 			}
4588 		} else {
4589 			break;
4590 		}
4591 		ZEND_VM_SMART_BRANCH(result, 0);
4592 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4593 		ZEND_VM_NEXT_OPCODE();
4594 	} while (0);
4595 
4596 	SAVE_OPLINE();
4597 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
4598 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4599 	}
4600 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
4601 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4602 	}
4603 	result = EX_VAR(opline->result.var);
4604 	compare_function(result, op1, op2);
4605 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
4606 
4607 
4608 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4609 }
4610 
4611 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4612 {
4613 	USE_OPLINE
4614 
4615 	zval *op1, *op2, *result;
4616 
4617 	op1 = EX_CONSTANT(opline->op1);
4618 	op2 = EX_CONSTANT(opline->op2);
4619 	do {
4620 		int result;
4621 
4622 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4623 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4624 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
4625 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4626 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
4627 			} else {
4628 				break;
4629 			}
4630 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4631 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4632 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
4633 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4634 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
4635 			} else {
4636 				break;
4637 			}
4638 		} else {
4639 			break;
4640 		}
4641 		ZEND_VM_SMART_BRANCH(result, 0);
4642 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4643 		ZEND_VM_NEXT_OPCODE();
4644 	} while (0);
4645 
4646 	SAVE_OPLINE();
4647 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4648 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4649 	}
4650 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4651 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4652 	}
4653 	result = EX_VAR(opline->result.var);
4654 	compare_function(result, op1, op2);
4655 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
4656 
4657 
4658 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4659 }
4660 
4661 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4662 {
4663 	USE_OPLINE
4664 
4665 	zval *op1, *op2, *result;
4666 
4667 	op1 = EX_CONSTANT(opline->op1);
4668 	op2 = EX_CONSTANT(opline->op2);
4669 	do {
4670 		int result;
4671 
4672 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
4673 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4674 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
4675 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4676 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
4677 			} else {
4678 				break;
4679 			}
4680 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
4681 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
4682 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
4683 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4684 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
4685 			} else {
4686 				break;
4687 			}
4688 		} else {
4689 			break;
4690 		}
4691 		ZEND_VM_SMART_BRANCH(result, 0);
4692 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
4693 		ZEND_VM_NEXT_OPCODE();
4694 	} while (0);
4695 
4696 	SAVE_OPLINE();
4697 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4698 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4699 	}
4700 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4701 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4702 	}
4703 	result = EX_VAR(opline->result.var);
4704 	compare_function(result, op1, op2);
4705 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
4706 
4707 
4708 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4709 }
4710 
4711 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4712 {
4713 	USE_OPLINE
4714 
4715 	zval *op1, *op2;
4716 
4717 	SAVE_OPLINE();
4718 	op1 = EX_CONSTANT(opline->op1);
4719 	op2 = EX_CONSTANT(opline->op2);
4720 	compare_function(EX_VAR(opline->result.var), op1, op2);
4721 
4722 
4723 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4724 }
4725 
4726 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4727 {
4728 	USE_OPLINE
4729 
4730 	zval *op1, *op2;
4731 
4732 	op1 = EX_CONSTANT(opline->op1);
4733 	op2 = EX_CONSTANT(opline->op2);
4734 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4735 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4736 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
4737 		ZEND_VM_NEXT_OPCODE();
4738 	}
4739 
4740 	SAVE_OPLINE();
4741 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4742 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4743 	}
4744 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4745 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4746 	}
4747 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
4748 
4749 
4750 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4751 }
4752 
4753 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4754 {
4755 	USE_OPLINE
4756 
4757 	zval *op1, *op2;
4758 
4759 	op1 = EX_CONSTANT(opline->op1);
4760 	op2 = EX_CONSTANT(opline->op2);
4761 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4762 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4763 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
4764 		ZEND_VM_NEXT_OPCODE();
4765 	}
4766 
4767 	SAVE_OPLINE();
4768 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4769 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4770 	}
4771 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4772 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4773 	}
4774 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
4775 
4776 
4777 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4778 }
4779 
4780 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4781 {
4782 	USE_OPLINE
4783 
4784 	zval *op1, *op2;
4785 
4786 	op1 = EX_CONSTANT(opline->op1);
4787 	op2 = EX_CONSTANT(opline->op2);
4788 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
4789 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
4790 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
4791 		ZEND_VM_NEXT_OPCODE();
4792 	}
4793 
4794 	SAVE_OPLINE();
4795 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
4796 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
4797 	}
4798 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
4799 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
4800 	}
4801 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
4802 
4803 
4804 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4805 }
4806 
4807 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4808 {
4809 	USE_OPLINE
4810 
4811 	zval *op1, *op2;
4812 
4813 	SAVE_OPLINE();
4814 	op1 = EX_CONSTANT(opline->op1);
4815 	op2 = EX_CONSTANT(opline->op2);
4816 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
4817 
4818 
4819 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4820 }
4821 
4822 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
4823 {
4824 	USE_OPLINE
4825 
4826 	zval *varname;
4827 	zval *retval;
4828 
4829 	SAVE_OPLINE();
4830 	varname = EX_CONSTANT(opline->op1);
4831 
4832 	retval = zend_fetch_static_property_address(varname, IS_CONST, opline->op2, IS_CONST, type EXECUTE_DATA_CC);
4833 
4834 	if (UNEXPECTED(retval == NULL)) {
4835 		if (EG(exception)) {
4836 
4837 			ZVAL_UNDEF(EX_VAR(opline->result.var));
4838 			HANDLE_EXCEPTION();
4839 		} else {
4840 			ZEND_ASSERT(type == BP_VAR_IS);
4841 			retval = &EG(uninitialized_zval);
4842 		}
4843 	}
4844 
4845 	if (type == BP_VAR_R || type == BP_VAR_IS) {
4846 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
4847 	} else {
4848 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
4849 	}
4850 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4851 }
4852 
4853 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4854 {
4855 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4856 }
4857 
4858 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4859 {
4860 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4861 }
4862 
4863 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4864 {
4865 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4866 }
4867 
4868 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4869 {
4870 	USE_OPLINE
4871 
4872 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
4873 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4874 	} else {
4875 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4876 	}
4877 }
4878 
4879 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4880 {
4881 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4882 }
4883 
4884 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4885 {
4886 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_CONST(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
4887 }
4888 
4889 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4890 {
4891 	USE_OPLINE
4892 
4893 	zval *container, *dim, *value, *result;
4894 
4895 	SAVE_OPLINE();
4896 	container = EX_CONSTANT(opline->op1);
4897 	dim = EX_CONSTANT(opline->op2);
4898 	if (IS_CONST != IS_CONST) {
4899 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
4900 fetch_dim_r_array:
4901 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
4902 			result = EX_VAR(opline->result.var);
4903 			ZVAL_COPY_UNREF(result, value);
4904 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
4905 			container = Z_REFVAL_P(container);
4906 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
4907 				goto fetch_dim_r_array;
4908 			} else {
4909 				goto fetch_dim_r_slow;
4910 			}
4911 		} else {
4912 fetch_dim_r_slow:
4913 			result = EX_VAR(opline->result.var);
4914 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
4915 		}
4916 	} else {
4917 		result = EX_VAR(opline->result.var);
4918 		zend_fetch_dimension_address_read_R(result, container, dim, IS_CONST EXECUTE_DATA_CC);
4919 	}
4920 
4921 
4922 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4923 }
4924 
4925 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4926 {
4927 	USE_OPLINE
4928 
4929 	zval *container;
4930 
4931 	SAVE_OPLINE();
4932 	container = EX_CONSTANT(opline->op1);
4933 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
4934 
4935 
4936 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4937 }
4938 
4939 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4940 {
4941 	USE_OPLINE
4942 	zval *container;
4943 	zend_free_op free_op1;
4944 
4945 	SAVE_OPLINE();
4946 
4947 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
4948         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
4949             zend_throw_error(NULL, "Cannot use temporary expression in write context");
4950 
4951 
4952 			ZVAL_UNDEF(EX_VAR(opline->result.var));
4953 			HANDLE_EXCEPTION();
4954         }
4955 		container = NULL;
4956 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
4957 		if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) {
4958 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
4959 		}
4960 
4961 
4962 	} else {
4963 		if (IS_CONST == IS_UNUSED) {
4964 			zend_throw_error(NULL, "Cannot use [] for reading");
4965 
4966 
4967 			ZVAL_UNDEF(EX_VAR(opline->result.var));
4968 			HANDLE_EXCEPTION();
4969 		}
4970 		container = EX_CONSTANT(opline->op1);
4971 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
4972 
4973 
4974 	}
4975 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
4976 }
4977 
4978 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
4979 {
4980 	USE_OPLINE
4981 
4982 	zval *container;
4983 
4984 	zval *offset;
4985 
4986 	SAVE_OPLINE();
4987 	container = EX_CONSTANT(opline->op1);
4988 
4989 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
4990 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
4991 	}
4992 
4993 	offset = EX_CONSTANT(opline->op2);
4994 
4995 	if (IS_CONST == IS_CONST ||
4996 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
4997 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
4998 			container = Z_REFVAL_P(container);
4999 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
5000 				goto fetch_obj_r_no_object;
5001 			}
5002 		} else {
5003 			goto fetch_obj_r_no_object;
5004 		}
5005 	}
5006 
5007 	/* here we are sure we are dealing with an object */
5008 	do {
5009 		zend_object *zobj = Z_OBJ_P(container);
5010 		zval *retval;
5011 
5012 		if (IS_CONST == IS_CONST &&
5013 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
5014 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
5015 
5016 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
5017 				retval = OBJ_PROP(zobj, prop_offset);
5018 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
5019 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
5020 					break;
5021 				}
5022 			} else if (EXPECTED(zobj->properties != NULL)) {
5023 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
5024 				if (EXPECTED(retval)) {
5025 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
5026 					break;
5027 				}
5028 			}
5029 		}
5030 
5031 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
5032 			zend_string *property_name;
5033 fetch_obj_r_no_object:
5034 			property_name = zval_get_string(offset);
5035 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
5036 			zend_string_release(property_name);
5037 			ZVAL_NULL(EX_VAR(opline->result.var));
5038 		} else {
5039 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
5040 
5041 			if (retval != EX_VAR(opline->result.var)) {
5042 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
5043 			}
5044 		}
5045 	} while (0);
5046 
5047 
5048 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5049 }
5050 
5051 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5052 {
5053 	USE_OPLINE
5054 
5055 	zval *container;
5056 
5057 	zval *offset;
5058 
5059 	SAVE_OPLINE();
5060 	container = EX_CONSTANT(opline->op1);
5061 
5062 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
5063 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5064 	}
5065 
5066 	offset  = EX_CONSTANT(opline->op2);
5067 
5068 	if (IS_CONST == IS_CONST ||
5069 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
5070 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
5071 			container = Z_REFVAL_P(container);
5072 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
5073 				goto fetch_obj_is_no_object;
5074 			}
5075 		} else {
5076 			goto fetch_obj_is_no_object;
5077 		}
5078 	}
5079 
5080 	/* here we are sure we are dealing with an object */
5081 	do {
5082 		zend_object *zobj = Z_OBJ_P(container);
5083 		zval *retval;
5084 
5085 		if (IS_CONST == IS_CONST &&
5086 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
5087 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
5088 
5089 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
5090 				retval = OBJ_PROP(zobj, prop_offset);
5091 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
5092 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
5093 					break;
5094 				}
5095 			} else if (EXPECTED(zobj->properties != NULL)) {
5096 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
5097 				if (EXPECTED(retval)) {
5098 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
5099 					break;
5100 				}
5101 			}
5102 		}
5103 
5104 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
5105 fetch_obj_is_no_object:
5106 			ZVAL_NULL(EX_VAR(opline->result.var));
5107 		} else {
5108 
5109 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
5110 
5111 			if (retval != EX_VAR(opline->result.var)) {
5112 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
5113 			}
5114 		}
5115 	} while (0);
5116 
5117 
5118 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5119 }
5120 
5121 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5122 {
5123 	USE_OPLINE
5124 	zval *container;
5125 
5126 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
5127 		/* Behave like FETCH_OBJ_W */
5128 		zend_free_op free_op1;
5129 		zval *property;
5130 
5131 		SAVE_OPLINE();
5132 		container = NULL;
5133 
5134 		if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
5135 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5136 		}
5137 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
5138 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
5139 
5140 
5141 			ZVAL_UNDEF(EX_VAR(opline->result.var));
5142 			HANDLE_EXCEPTION();
5143 		}
5144 		property = EX_CONSTANT(opline->op2);
5145 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
5146 
5147 		if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) {
5148 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
5149 		}
5150 
5151 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5152 	} else {
5153 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5154 	}
5155 }
5156 
5157 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5158 {
5159 	USE_OPLINE
5160 
5161 	zval *container;
5162 
5163 	SAVE_OPLINE();
5164 	container = EX_CONSTANT(opline->op1);
5165 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2) EXECUTE_DATA_CC);
5166 
5167 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5168 }
5169 
5170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5171 {
5172 	USE_OPLINE
5173 
5174 	zval *op1, *op2;
5175 	zend_string *op1_str, *op2_str, *str;
5176 
5177 
5178 	op1 = EX_CONSTANT(opline->op1);
5179 	op2 = EX_CONSTANT(opline->op2);
5180 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
5181 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
5182 		zend_string *op1_str = Z_STR_P(op1);
5183 		zend_string *op2_str = Z_STR_P(op2);
5184 		zend_string *str;
5185 
5186 		do {
5187 			if (IS_CONST != IS_CONST) {
5188 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
5189 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
5190 
5191 					break;
5192 				}
5193 			}
5194 			if (IS_CONST != IS_CONST) {
5195 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
5196 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
5197 
5198 					break;
5199 				}
5200 			}
5201 			if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
5202 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
5203 			    size_t len = ZSTR_LEN(op1_str);
5204 
5205 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
5206 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
5207 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
5208 				break;
5209 			} else {
5210 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
5211 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
5212 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
5213 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
5214 			}
5215 
5216 		} while (0);
5217 
5218 		ZEND_VM_NEXT_OPCODE();
5219 	}
5220 
5221 	SAVE_OPLINE();
5222 	if (IS_CONST == IS_CONST) {
5223 		op1_str = Z_STR_P(op1);
5224 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
5225 		op1_str = zend_string_copy(Z_STR_P(op1));
5226 	} else {
5227 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
5228 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
5229 		}
5230 		op1_str = _zval_get_string_func(op1);
5231 	}
5232 	if (IS_CONST == IS_CONST) {
5233 		op2_str = Z_STR_P(op2);
5234 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
5235 		op2_str = zend_string_copy(Z_STR_P(op2));
5236 	} else {
5237 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
5238 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
5239 		}
5240 		op2_str = _zval_get_string_func(op2);
5241 	}
5242 	do {
5243 		if (IS_CONST != IS_CONST) {
5244 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
5245 				if (IS_CONST == IS_CONST) {
5246 					zend_string_addref(op2_str);
5247 				}
5248 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
5249 				zend_string_release(op1_str);
5250 				break;
5251 			}
5252 		}
5253 		if (IS_CONST != IS_CONST) {
5254 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
5255 				if (IS_CONST == IS_CONST) {
5256 					zend_string_addref(op1_str);
5257 				}
5258 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
5259 				zend_string_release(op2_str);
5260 				break;
5261 			}
5262 		}
5263 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
5264 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
5265 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
5266 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
5267 		if (IS_CONST != IS_CONST) {
5268 			zend_string_release(op1_str);
5269 		}
5270 		if (IS_CONST != IS_CONST) {
5271 			zend_string_release(op2_str);
5272 		}
5273 	} while (0);
5274 
5275 
5276 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5277 }
5278 
5279 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5280 {
5281 	USE_OPLINE
5282 	zval *function_name;
5283 
5284 	zval *object;
5285 	zend_function *fbc;
5286 	zend_class_entry *called_scope;
5287 	zend_object *obj;
5288 	zend_execute_data *call;
5289 	uint32_t call_info;
5290 
5291 	SAVE_OPLINE();
5292 
5293 	object = EX_CONSTANT(opline->op1);
5294 
5295 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
5296 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5297 	}
5298 
5299 	function_name = EX_CONSTANT(opline->op2);
5300 
5301 	if (IS_CONST != IS_CONST &&
5302 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
5303 		do {
5304 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
5305 				function_name = Z_REFVAL_P(function_name);
5306 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
5307 					break;
5308 				}
5309 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
5310 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
5311 				if (UNEXPECTED(EG(exception) != NULL)) {
5312 
5313 					HANDLE_EXCEPTION();
5314 				}
5315 			}
5316 			zend_throw_error(NULL, "Method name must be a string");
5317 
5318 
5319 			HANDLE_EXCEPTION();
5320 		} while (0);
5321 	}
5322 
5323 	if (IS_CONST != IS_UNUSED) {
5324 		do {
5325 			if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
5326 				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
5327 					object = Z_REFVAL_P(object);
5328 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
5329 						break;
5330 					}
5331 				}
5332 				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
5333 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
5334 					if (UNEXPECTED(EG(exception) != NULL)) {
5335 
5336 						HANDLE_EXCEPTION();
5337 					}
5338 				}
5339 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
5340 
5341 
5342 				HANDLE_EXCEPTION();
5343 			}
5344 		} while (0);
5345 	}
5346 
5347 	obj = Z_OBJ_P(object);
5348 	called_scope = obj->ce;
5349 
5350 	if (IS_CONST == IS_CONST &&
5351 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
5352 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
5353 	} else {
5354 	    zend_object *orig_obj = obj;
5355 
5356 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
5357 			zend_throw_error(NULL, "Object does not support method calls");
5358 
5359 
5360 			HANDLE_EXCEPTION();
5361 		}
5362 
5363 		/* First, locate the function. */
5364 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
5365 		if (UNEXPECTED(fbc == NULL)) {
5366 			if (EXPECTED(!EG(exception))) {
5367 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
5368 			}
5369 
5370 
5371 			HANDLE_EXCEPTION();
5372 		}
5373 		if (IS_CONST == IS_CONST &&
5374 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
5375 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
5376 		    EXPECTED(obj == orig_obj)) {
5377 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
5378 		}
5379 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
5380 			init_func_run_time_cache(&fbc->op_array);
5381 		}
5382 	}
5383 
5384 	call_info = ZEND_CALL_NESTED_FUNCTION;
5385 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
5386 		obj = NULL;
5387 	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
5388 		/* CV may be changed indirectly (e.g. when it's a reference) */
5389 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
5390 		GC_REFCOUNT(obj)++; /* For $this pointer */
5391 	}
5392 
5393 
5394 	if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
5395 		HANDLE_EXCEPTION();
5396 	}
5397 
5398 	call = zend_vm_stack_push_call_frame(call_info,
5399 		fbc, opline->extended_value, called_scope, obj);
5400 	call->prev_execute_data = EX(call);
5401 	EX(call) = call;
5402 
5403 	ZEND_VM_NEXT_OPCODE();
5404 }
5405 
5406 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5407 {
5408 	USE_OPLINE
5409 	zval *function_name;
5410 	zend_class_entry *ce;
5411 	zend_object *object;
5412 	zend_function *fbc;
5413 	zend_execute_data *call;
5414 
5415 	SAVE_OPLINE();
5416 
5417 	if (IS_CONST == IS_CONST) {
5418 		/* no function found. try a static method in class */
5419 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
5420 		if (UNEXPECTED(ce == NULL)) {
5421 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
5422 			if (UNEXPECTED(ce == NULL)) {
5423 				ZEND_ASSERT(EG(exception));
5424 
5425 				HANDLE_EXCEPTION();
5426 			}
5427 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
5428 		}
5429 	} else if (IS_CONST == IS_UNUSED) {
5430 		ce = zend_fetch_class(NULL, opline->op1.num);
5431 		if (UNEXPECTED(ce == NULL)) {
5432 			ZEND_ASSERT(EG(exception));
5433 
5434 			HANDLE_EXCEPTION();
5435 		}
5436 	} else {
5437 		ce = Z_CE_P(EX_VAR(opline->op1.var));
5438 	}
5439 
5440 	if (IS_CONST == IS_CONST &&
5441 	    IS_CONST == IS_CONST &&
5442 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
5443 		/* nothing to do */
5444 	} else if (IS_CONST != IS_CONST &&
5445 	           IS_CONST == IS_CONST &&
5446 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
5447 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
5448 	} else if (IS_CONST != IS_UNUSED) {
5449 
5450 
5451 		function_name = EX_CONSTANT(opline->op2);
5452 		if (IS_CONST != IS_CONST) {
5453 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
5454 				do {
5455 					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
5456 						function_name = Z_REFVAL_P(function_name);
5457 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
5458 							break;
5459 						}
5460 					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
5461 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
5462 						if (UNEXPECTED(EG(exception) != NULL)) {
5463 							HANDLE_EXCEPTION();
5464 						}
5465 					}
5466 					zend_throw_error(NULL, "Function name must be a string");
5467 
5468 					HANDLE_EXCEPTION();
5469 				} while (0);
5470  			}
5471 		}
5472 
5473 		if (ce->get_static_method) {
5474 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
5475 		} else {
5476 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
5477 		}
5478 		if (UNEXPECTED(fbc == NULL)) {
5479 			if (EXPECTED(!EG(exception))) {
5480 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
5481 			}
5482 
5483 			HANDLE_EXCEPTION();
5484 		}
5485 		if (IS_CONST == IS_CONST &&
5486 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
5487 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
5488 			if (IS_CONST == IS_CONST) {
5489 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
5490 			} else {
5491 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
5492 			}
5493 		}
5494 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
5495 			init_func_run_time_cache(&fbc->op_array);
5496 		}
5497 		if (IS_CONST != IS_CONST) {
5498 
5499 		}
5500 	} else {
5501 		if (UNEXPECTED(ce->constructor == NULL)) {
5502 			zend_throw_error(NULL, "Cannot call constructor");
5503 			HANDLE_EXCEPTION();
5504 		}
5505 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
5506 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
5507 			HANDLE_EXCEPTION();
5508 		}
5509 		fbc = ce->constructor;
5510 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
5511 			init_func_run_time_cache(&fbc->op_array);
5512 		}
5513 	}
5514 
5515 	object = NULL;
5516 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
5517 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
5518 			object = Z_OBJ(EX(This));
5519 			ce = object->ce;
5520 		} else {
5521 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
5522 				/* Allowed for PHP 4 compatibility. */
5523 				zend_error(
5524 					E_DEPRECATED,
5525 					"Non-static method %s::%s() should not be called statically",
5526 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
5527 				if (UNEXPECTED(EG(exception) != NULL)) {
5528 					HANDLE_EXCEPTION();
5529 				}
5530 			} else {
5531 				/* An internal function assumes $this is present and won't check that.
5532 				 * So PHP would crash by allowing the call. */
5533 				zend_throw_error(
5534 					zend_ce_error,
5535 					"Non-static method %s::%s() cannot be called statically",
5536 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
5537 				HANDLE_EXCEPTION();
5538 			}
5539 		}
5540 	}
5541 
5542 	if (IS_CONST == IS_UNUSED) {
5543 		/* previous opcode is ZEND_FETCH_CLASS */
5544 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
5545 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
5546 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
5547 				ce = Z_OBJCE(EX(This));
5548 			} else {
5549 				ce = Z_CE(EX(This));
5550 			}
5551 		}
5552 	}
5553 
5554 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
5555 		fbc, opline->extended_value, ce, object);
5556 	call->prev_execute_data = EX(call);
5557 	EX(call) = call;
5558 
5559 	ZEND_VM_NEXT_OPCODE();
5560 }
5561 
5562 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5563 {
5564 	USE_OPLINE
5565 
5566 	zval *function_name;
5567 	zend_fcall_info_cache fcc;
5568 	char *error = NULL;
5569 	zend_function *func;
5570 	zend_class_entry *called_scope;
5571 	zend_object *object;
5572 	zend_execute_data *call;
5573 	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
5574 
5575 	SAVE_OPLINE();
5576 	function_name = EX_CONSTANT(opline->op2);
5577 	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
5578 		func = fcc.function_handler;
5579 		called_scope = fcc.called_scope;
5580 		object = fcc.object;
5581 		if (error) {
5582 			efree(error);
5583 			/* This is the only soft error is_callable() can generate */
5584 			zend_error(E_DEPRECATED,
5585 				"Non-static method %s::%s() should not be called statically",
5586 				ZSTR_VAL(func->common.scope->name), ZSTR_VAL(func->common.function_name));
5587 			if (UNEXPECTED(EG(exception) != NULL)) {
5588 
5589 				HANDLE_EXCEPTION();
5590 			}
5591 		}
5592 		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
5593 			/* Delay closure destruction until its invocation */
5594 			ZEND_ASSERT(GC_TYPE((zend_object*)func->common.prototype) == IS_OBJECT);
5595 			GC_REFCOUNT((zend_object*)func->common.prototype)++;
5596 			call_info |= ZEND_CALL_CLOSURE;
5597 			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
5598 				call_info |= ZEND_CALL_FAKE_CLOSURE;
5599 			}
5600 		} else if (object) {
5601 			call_info |= ZEND_CALL_RELEASE_THIS;
5602 			GC_REFCOUNT(object)++; /* For $this pointer */
5603 		}
5604 
5605 		if ((IS_CONST & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
5606 			if (call_info & ZEND_CALL_CLOSURE) {
5607 				zend_object_release((zend_object*)func->common.prototype);
5608 			}
5609 			if (call_info & ZEND_CALL_RELEASE_THIS) {
5610 				zend_object_release(object);
5611 			}
5612 			HANDLE_EXCEPTION();
5613 		}
5614 
5615 		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!func->op_array.run_time_cache)) {
5616 			init_func_run_time_cache(&func->op_array);
5617 		}
5618 	} else {
5619 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(EX_CONSTANT(opline->op1)), error);
5620 		efree(error);
5621 
5622 		if (UNEXPECTED(EG(exception))) {
5623 			HANDLE_EXCEPTION();
5624 		}
5625 		func = (zend_function*)&zend_pass_function;
5626 		called_scope = NULL;
5627 		object = NULL;
5628 	}
5629 
5630 	call = zend_vm_stack_push_call_frame(call_info,
5631 		func, opline->extended_value, called_scope, object);
5632 	call->prev_execute_data = EX(call);
5633 	EX(call) = call;
5634 
5635 	ZEND_VM_NEXT_OPCODE();
5636 }
5637 
5638 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5639 {
5640 	USE_OPLINE
5641 
5642 	zval *op1, *op2, *result;
5643 
5644 	op1 = EX_CONSTANT(opline->op1);
5645 	op2 = EX_CONSTANT(opline->op2);
5646 	do {
5647 		int result;
5648 
5649 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
5650 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
5651 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
5652 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
5653 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
5654 			} else {
5655 				break;
5656 			}
5657 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
5658 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
5659 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
5660 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
5661 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
5662 			} else {
5663 				break;
5664 			}
5665 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
5666 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
5667 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
5668 					result = 1;
5669 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
5670 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
5671 						result = 0;
5672 					} else {
5673 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
5674 					}
5675 				} else {
5676 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
5677 				}
5678 
5679 			} else {
5680 				break;
5681 			}
5682 		} else {
5683 			break;
5684 		}
5685 		ZEND_VM_SMART_BRANCH(result, 0);
5686 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
5687 		ZEND_VM_NEXT_OPCODE();
5688 	} while (0);
5689 
5690 	SAVE_OPLINE();
5691 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
5692 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
5693 	}
5694 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
5695 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
5696 	}
5697 	result = EX_VAR(opline->result.var);
5698 	compare_function(result, op1, op2);
5699 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
5700 
5701 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5702 }
5703 
5704 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5705 {
5706 	zend_class_entry *ce, *scope;
5707 	zend_class_constant *c;
5708 	zval *value;
5709 	USE_OPLINE
5710 
5711 	SAVE_OPLINE();
5712 
5713 	do {
5714 		if (IS_CONST == IS_CONST) {
5715 			if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))))) {
5716 				value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
5717 #ifdef ZTS
5718 				ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
5719 #endif
5720 				break;
5721 			} else if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))))) {
5722 				ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
5723 			} else {
5724 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
5725 				if (UNEXPECTED(ce == NULL)) {
5726 					ZEND_ASSERT(EG(exception));
5727 					ZVAL_UNDEF(EX_VAR(opline->result.var));
5728 					HANDLE_EXCEPTION();
5729 				}
5730 				CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
5731 			}
5732 		} else {
5733 			if (IS_CONST == IS_UNUSED) {
5734 				ce = zend_fetch_class(NULL, opline->op1.num);
5735 				if (UNEXPECTED(ce == NULL)) {
5736 					ZEND_ASSERT(EG(exception));
5737 					ZVAL_UNDEF(EX_VAR(opline->result.var));
5738 					HANDLE_EXCEPTION();
5739 				}
5740 			} else {
5741 				ce = Z_CE_P(EX_VAR(opline->op1.var));
5742 			}
5743 			if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
5744 				value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
5745 				break;
5746 			}
5747 		}
5748 
5749 		if (EXPECTED((c = zend_hash_find_ptr(&ce->constants_table, Z_STR_P(EX_CONSTANT(opline->op2)))) != NULL)) {
5750 			scope = EX(func)->op_array.scope;
5751 			if (!zend_verify_const_access(c, scope)) {
5752 				zend_throw_error(NULL, "Cannot access %s const %s::%s", zend_visibility_string(Z_ACCESS_FLAGS(c->value)), ZSTR_VAL(ce->name), Z_STRVAL_P(EX_CONSTANT(opline->op2)));
5753 				ZVAL_UNDEF(EX_VAR(opline->result.var));
5754 				HANDLE_EXCEPTION();
5755 			}
5756 			value = &c->value;
5757 			if (Z_CONSTANT_P(value)) {
5758 				zval_update_constant_ex(value, c->ce);
5759 				if (UNEXPECTED(EG(exception) != NULL)) {
5760 					ZVAL_UNDEF(EX_VAR(opline->result.var));
5761 					HANDLE_EXCEPTION();
5762 				}
5763 			}
5764 			if (IS_CONST == IS_CONST) {
5765 				CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), value);
5766 			} else {
5767 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce, value);
5768 			}
5769 		} else {
5770 			zend_throw_error(NULL, "Undefined class constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2)));
5771 			ZVAL_UNDEF(EX_VAR(opline->result.var));
5772 			HANDLE_EXCEPTION();
5773 		}
5774 	} while (0);
5775 
5776 #ifdef ZTS
5777 	if (ce->type == ZEND_INTERNAL_CLASS) {
5778 		ZVAL_DUP(EX_VAR(opline->result.var), value);
5779 	} else {
5780 		ZVAL_COPY(EX_VAR(opline->result.var), value);
5781 	}
5782 #else
5783 	ZVAL_COPY(EX_VAR(opline->result.var), value);
5784 #endif
5785 
5786 	ZEND_VM_NEXT_OPCODE();
5787 }
5788 
5789 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5790 {
5791 	USE_OPLINE
5792 
5793 	zval *expr_ptr, new_expr;
5794 
5795 	SAVE_OPLINE();
5796 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
5797 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
5798 		expr_ptr = NULL;
5799 		ZVAL_MAKE_REF(expr_ptr);
5800 		Z_ADDREF_P(expr_ptr);
5801 
5802 	} else {
5803 		expr_ptr = EX_CONSTANT(opline->op1);
5804 		if (IS_CONST == IS_TMP_VAR) {
5805 			/* pass */
5806 		} else if (IS_CONST == IS_CONST) {
5807 			if (Z_REFCOUNTED_P(expr_ptr)) {
5808 				Z_ADDREF_P(expr_ptr);
5809 			}
5810 		} else if (IS_CONST == IS_CV) {
5811 			ZVAL_DEREF(expr_ptr);
5812 			if (Z_REFCOUNTED_P(expr_ptr)) {
5813 				Z_ADDREF_P(expr_ptr);
5814 			}
5815 		} else /* if (IS_CONST == IS_VAR) */ {
5816 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
5817 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
5818 
5819 				expr_ptr = Z_REFVAL_P(expr_ptr);
5820 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
5821 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
5822 					expr_ptr = &new_expr;
5823 					efree_size(ref, sizeof(zend_reference));
5824 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
5825 					Z_ADDREF_P(expr_ptr);
5826 				}
5827 			}
5828 		}
5829 	}
5830 
5831 	if (IS_CONST != IS_UNUSED) {
5832 
5833 		zval *offset = EX_CONSTANT(opline->op2);
5834 		zend_string *str;
5835 		zend_ulong hval;
5836 
5837 add_again:
5838 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
5839 			str = Z_STR_P(offset);
5840 			if (IS_CONST != IS_CONST) {
5841 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
5842 					goto num_index;
5843 				}
5844 			}
5845 str_index:
5846 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
5847 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
5848 			hval = Z_LVAL_P(offset);
5849 num_index:
5850 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
5851 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
5852 			offset = Z_REFVAL_P(offset);
5853 			goto add_again;
5854 		} else if (Z_TYPE_P(offset) == IS_NULL) {
5855 			str = ZSTR_EMPTY_ALLOC();
5856 			goto str_index;
5857 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
5858 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
5859 			goto num_index;
5860 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
5861 			hval = 0;
5862 			goto num_index;
5863 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
5864 			hval = 1;
5865 			goto num_index;
5866 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
5867 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
5868 			str = ZSTR_EMPTY_ALLOC();
5869 			goto str_index;
5870 		} else {
5871 			zend_error(E_WARNING, "Illegal offset type");
5872 			zval_ptr_dtor(expr_ptr);
5873 		}
5874 
5875 	} else {
5876 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
5877 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
5878 			zval_ptr_dtor(expr_ptr);
5879 		}
5880 	}
5881 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5882 }
5883 
5884 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5885 {
5886 	zval *array;
5887 	uint32_t size;
5888 	USE_OPLINE
5889 
5890 	array = EX_VAR(opline->result.var);
5891 	if (IS_CONST != IS_UNUSED) {
5892 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
5893 	} else {
5894 		size = 0;
5895 	}
5896 	ZVAL_NEW_ARR(array);
5897 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
5898 
5899 	if (IS_CONST != IS_UNUSED) {
5900 		/* Explicitly initialize array as not-packed if flag is set */
5901 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
5902 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
5903 		}
5904 	}
5905 
5906 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
5907 }
5908 
5909 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5910 {
5911 	USE_OPLINE
5912 	zval tmp, *varname;
5913 	zend_class_entry *ce;
5914 
5915 
5916 	SAVE_OPLINE();
5917 
5918 	varname = EX_CONSTANT(opline->op1);
5919 
5920 	ZVAL_UNDEF(&tmp);
5921 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
5922 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
5923 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
5924 		}
5925 		ZVAL_STR(&tmp, zval_get_string(varname));
5926 		varname = &tmp;
5927 	}
5928 
5929 	if (IS_CONST == IS_CONST) {
5930 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
5931 		if (UNEXPECTED(ce == NULL)) {
5932 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
5933 			if (UNEXPECTED(ce == NULL)) {
5934 				ZEND_ASSERT(EG(exception));
5935 				if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
5936 					zend_string_release(Z_STR(tmp));
5937 				}
5938 
5939 				HANDLE_EXCEPTION();
5940 			}
5941 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
5942 		}
5943 	} else if (IS_CONST == IS_UNUSED) {
5944 		ce = zend_fetch_class(NULL, opline->op2.num);
5945 		if (UNEXPECTED(ce == NULL)) {
5946 			ZEND_ASSERT(EG(exception));
5947 			if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
5948 				zend_string_release(Z_STR(tmp));
5949 			}
5950 
5951 			HANDLE_EXCEPTION();
5952 		}
5953 	} else {
5954 		ce = Z_CE_P(EX_VAR(opline->op2.var));
5955 	}
5956 	zend_std_unset_static_property(ce, Z_STR_P(varname));
5957 
5958 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
5959 		zend_string_release(Z_STR(tmp));
5960 	}
5961 
5962 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
5963 }
5964 
5965 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
5966 {
5967 	USE_OPLINE
5968 	zval *value;
5969 	int result;
5970 
5971 	zval tmp, *varname;
5972 	zend_class_entry *ce;
5973 
5974 	SAVE_OPLINE();
5975 	varname = EX_CONSTANT(opline->op1);
5976 	ZVAL_UNDEF(&tmp);
5977 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
5978 		ZVAL_STR(&tmp, zval_get_string(varname));
5979 		varname = &tmp;
5980 	}
5981 
5982 	if (IS_CONST == IS_CONST) {
5983 		if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
5984 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
5985 
5986 			/* check if static properties were destoyed */
5987 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
5988 				value = NULL;
5989 			}
5990 
5991 			goto is_static_prop_return;
5992 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
5993 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
5994 			if (UNEXPECTED(ce == NULL)) {
5995 				ZEND_ASSERT(EG(exception));
5996 				ZVAL_UNDEF(EX_VAR(opline->result.var));
5997 				HANDLE_EXCEPTION();
5998 			}
5999 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
6000 		}
6001 	} else {
6002 		if (IS_CONST == IS_UNUSED) {
6003 			ce = zend_fetch_class(NULL, opline->op2.num);
6004 			if (UNEXPECTED(ce == NULL)) {
6005 				ZEND_ASSERT(EG(exception));
6006 				if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
6007 					zend_string_release(Z_STR(tmp));
6008 				}
6009 
6010 				ZVAL_UNDEF(EX_VAR(opline->result.var));
6011 				HANDLE_EXCEPTION();
6012 			}
6013 		} else {
6014 			ce = Z_CE_P(EX_VAR(opline->op2.var));
6015 		}
6016 		if (IS_CONST == IS_CONST &&
6017 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
6018 
6019 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
6020 
6021 			/* check if static properties were destoyed */
6022 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
6023 				value = NULL;
6024 			}
6025 
6026 			goto is_static_prop_return;
6027 		}
6028 	}
6029 
6030 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
6031 
6032 	if (IS_CONST == IS_CONST && value) {
6033 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
6034 	}
6035 
6036 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
6037 		zend_string_release(Z_STR(tmp));
6038 	}
6039 
6040 is_static_prop_return:
6041 	if (opline->extended_value & ZEND_ISSET) {
6042 		result = value && Z_TYPE_P(value) > IS_NULL &&
6043 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
6044 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
6045 		result = !value || !i_zend_is_true(value);
6046 	}
6047 
6048 	ZEND_VM_SMART_BRANCH(result, 1);
6049 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6050 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6051 }
6052 
6053 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6054 {
6055 	USE_OPLINE
6056 
6057 	zval *container;
6058 	int result;
6059 	zend_ulong hval;
6060 	zval *offset;
6061 
6062 	SAVE_OPLINE();
6063 	container = EX_CONSTANT(opline->op1);
6064 	offset = EX_CONSTANT(opline->op2);
6065 
6066 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6067 		HashTable *ht;
6068 		zval *value;
6069 		zend_string *str;
6070 
6071 isset_dim_obj_array:
6072 		ht = Z_ARRVAL_P(container);
6073 isset_again:
6074 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
6075 			str = Z_STR_P(offset);
6076 			if (IS_CONST != IS_CONST) {
6077 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
6078 					goto num_index_prop;
6079 				}
6080 			}
6081 str_index_prop:
6082 			value = zend_hash_find_ind(ht, str);
6083 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
6084 			hval = Z_LVAL_P(offset);
6085 num_index_prop:
6086 			value = zend_hash_index_find(ht, hval);
6087 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
6088 			offset = Z_REFVAL_P(offset);
6089 			goto isset_again;
6090 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
6091 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
6092 			goto num_index_prop;
6093 		} else if (Z_TYPE_P(offset) == IS_NULL) {
6094 			str = ZSTR_EMPTY_ALLOC();
6095 			goto str_index_prop;
6096 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
6097 			hval = 0;
6098 			goto num_index_prop;
6099 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
6100 			hval = 1;
6101 			goto num_index_prop;
6102 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
6103 			hval = Z_RES_HANDLE_P(offset);
6104 			goto num_index_prop;
6105 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
6106 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
6107 			str = ZSTR_EMPTY_ALLOC();
6108 			goto str_index_prop;
6109 		} else {
6110 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
6111 			goto isset_not_found;
6112 		}
6113 
6114 		if (opline->extended_value & ZEND_ISSET) {
6115 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
6116 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
6117 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
6118 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
6119 			result = (value == NULL || !i_zend_is_true(value));
6120 		}
6121 		goto isset_dim_obj_exit;
6122 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
6123 		container = Z_REFVAL_P(container);
6124 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6125 			goto isset_dim_obj_array;
6126 		}
6127 	}
6128 
6129 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
6130 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
6131 	}
6132 
6133 	if ((IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
6134 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
6135 			result =
6136 				((opline->extended_value & ZEND_ISSET) == 0) ^
6137 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
6138 		} else {
6139 			zend_error(E_NOTICE, "Trying to check element of non-array");
6140 			goto isset_not_found;
6141 		}
6142 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
6143 		zend_long lval;
6144 
6145 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
6146 			lval = Z_LVAL_P(offset);
6147 isset_str_offset:
6148 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
6149 				lval += (zend_long)Z_STRLEN_P(container);
6150 			}
6151 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
6152 				if (opline->extended_value & ZEND_ISSET) {
6153 					result = 1;
6154 				} else {
6155 					result = (Z_STRVAL_P(container)[lval] == '0');
6156 				}
6157 			} else {
6158 				goto isset_not_found;
6159 			}
6160 		} else {
6161 			if (IS_CONST & (IS_CV|IS_VAR)) {
6162 				ZVAL_DEREF(offset);
6163 			}
6164 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
6165 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
6166 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
6167 				lval = zval_get_long(offset);
6168 				goto isset_str_offset;
6169 			}
6170 			goto isset_not_found;
6171 		}
6172 	} else {
6173 isset_not_found:
6174 		result = ((opline->extended_value & ZEND_ISSET) == 0);
6175 	}
6176 
6177 isset_dim_obj_exit:
6178 
6179 
6180 	ZEND_VM_SMART_BRANCH(result, 1);
6181 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6182 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6183 }
6184 
6185 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6186 {
6187 	USE_OPLINE
6188 
6189 	zval *container;
6190 	int result;
6191 	zval *offset;
6192 
6193 	SAVE_OPLINE();
6194 	container = EX_CONSTANT(opline->op1);
6195 
6196 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
6197 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
6198 	}
6199 
6200 	offset = EX_CONSTANT(opline->op2);
6201 
6202 	if (IS_CONST == IS_CONST ||
6203 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
6204 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
6205 			container = Z_REFVAL_P(container);
6206 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
6207 				goto isset_no_object;
6208 			}
6209 		} else {
6210 			goto isset_no_object;
6211 		}
6212 	}
6213 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
6214 		zend_string *property_name = zval_get_string(offset);
6215 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
6216 		zend_string_release(property_name);
6217 isset_no_object:
6218 		result = ((opline->extended_value & ZEND_ISSET) == 0);
6219 	} else {
6220 		result =
6221 			((opline->extended_value & ZEND_ISSET) == 0) ^
6222 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
6223 	}
6224 
6225 
6226 	ZEND_VM_SMART_BRANCH(result, 1);
6227 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6228 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6229 }
6230 
6231 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6232 {
6233 	USE_OPLINE
6234 
6235 	zval *name;
6236 	zval *val;
6237 	zend_constant c;
6238 
6239 	SAVE_OPLINE();
6240 	name  = EX_CONSTANT(opline->op1);
6241 	val   = EX_CONSTANT(opline->op2);
6242 
6243 	ZVAL_COPY(&c.value, val);
6244 	if (Z_OPT_CONSTANT(c.value)) {
6245 		if (UNEXPECTED(zval_update_constant_ex(&c.value, EX(func)->op_array.scope) != SUCCESS)) {
6246 			zval_ptr_dtor(&c.value);
6247 
6248 
6249 			HANDLE_EXCEPTION();
6250 		}
6251 	}
6252 	c.flags = CONST_CS; /* non persistent, case sensetive */
6253 	c.name = zend_string_dup(Z_STR_P(name), 0);
6254 	c.module_number = PHP_USER_CONSTANT;
6255 
6256 	if (zend_register_constant(&c) == FAILURE) {
6257 	}
6258 
6259 
6260 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6261 }
6262 
6263 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6264 {
6265 	USE_OPLINE
6266 
6267 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
6268 
6269 	SAVE_OPLINE();
6270 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
6271 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
6272 
6273 
6274 		UNDEF_RESULT();
6275 		HANDLE_EXCEPTION();
6276 	}
6277 
6278 	/* Destroy the previously yielded value */
6279 	zval_ptr_dtor(&generator->value);
6280 
6281 	/* Destroy the previously yielded key */
6282 	zval_ptr_dtor(&generator->key);
6283 
6284 	/* Set the new yielded value */
6285 	if (IS_CONST != IS_UNUSED) {
6286 
6287 
6288 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
6289 			/* Constants and temporary variables aren't yieldable by reference,
6290 			 * but we still allow them with a notice. */
6291 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
6292 				zval *value;
6293 
6294 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
6295 
6296 				value = EX_CONSTANT(opline->op1);
6297 				ZVAL_COPY_VALUE(&generator->value, value);
6298 				if (IS_CONST == IS_CONST) {
6299 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
6300 						Z_ADDREF(generator->value);
6301 					}
6302 				}
6303 			} else {
6304 				zval *value_ptr = NULL;
6305 
6306 				/* If a function call result is yielded and the function did
6307 				 * not return by reference we throw a notice. */
6308 				if (IS_CONST == IS_VAR &&
6309 				    (value_ptr == &EG(uninitialized_zval) ||
6310 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
6311 				      !Z_ISREF_P(value_ptr)))) {
6312 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
6313 				} else {
6314 					ZVAL_MAKE_REF(value_ptr);
6315 				}
6316 				ZVAL_COPY(&generator->value, value_ptr);
6317 
6318 			}
6319 		} else {
6320 			zval *value = EX_CONSTANT(opline->op1);
6321 
6322 			/* Consts, temporary variables and references need copying */
6323 			if (IS_CONST == IS_CONST) {
6324 				ZVAL_COPY_VALUE(&generator->value, value);
6325 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
6326 					Z_ADDREF(generator->value);
6327 				}
6328 			} else if (IS_CONST == IS_TMP_VAR) {
6329 				ZVAL_COPY_VALUE(&generator->value, value);
6330             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
6331 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
6332 
6333 			} else {
6334 				ZVAL_COPY_VALUE(&generator->value, value);
6335 				if (IS_CONST == IS_CV) {
6336 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
6337 				}
6338 			}
6339 		}
6340 	} else {
6341 		/* If no value was specified yield null */
6342 		ZVAL_NULL(&generator->value);
6343 	}
6344 
6345 	/* Set the new yielded key */
6346 	if (IS_CONST != IS_UNUSED) {
6347 
6348 		zval *key = EX_CONSTANT(opline->op2);
6349 
6350 		/* Consts, temporary variables and references need copying */
6351 		if (IS_CONST == IS_CONST) {
6352 			ZVAL_COPY_VALUE(&generator->key, key);
6353 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
6354 				Z_ADDREF(generator->key);
6355 			}
6356 		} else if (IS_CONST == IS_TMP_VAR) {
6357 			ZVAL_COPY_VALUE(&generator->key, key);
6358 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
6359 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
6360 
6361 		} else {
6362 			ZVAL_COPY_VALUE(&generator->key, key);
6363 			if (IS_CONST == IS_CV) {
6364 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
6365 			}
6366 		}
6367 
6368 		if (Z_TYPE(generator->key) == IS_LONG
6369 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
6370 		) {
6371 			generator->largest_used_integer_key = Z_LVAL(generator->key);
6372 		}
6373 	} else {
6374 		/* If no key was specified we use auto-increment keys */
6375 		generator->largest_used_integer_key++;
6376 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
6377 	}
6378 
6379 	if (RETURN_VALUE_USED(opline)) {
6380 		/* If the return value of yield is used set the send
6381 		 * target and initialize it to NULL */
6382 		generator->send_target = EX_VAR(opline->result.var);
6383 		ZVAL_NULL(generator->send_target);
6384 	} else {
6385 		generator->send_target = NULL;
6386 	}
6387 
6388 	/* We increment to the next op, so we are at the correct position when the
6389 	 * generator is resumed. */
6390 	ZEND_VM_INC_OPCODE();
6391 
6392 	/* The GOTO VM uses a local opline variable. We need to set the opline
6393 	 * variable in execute_data so we don't resume at an old position. */
6394 	SAVE_OPLINE();
6395 
6396 	ZEND_VM_RETURN();
6397 }
6398 
6399 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6400 {
6401 	USE_OPLINE
6402 
6403 	zval *op, *jump_zv;
6404 	HashTable *jumptable;
6405 
6406 	op = EX_CONSTANT(opline->op1);
6407 	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
6408 
6409 	if (Z_TYPE_P(op) != IS_LONG) {
6410 		ZVAL_DEREF(op);
6411 		if (Z_TYPE_P(op) != IS_LONG) {
6412 			/* Wrong type, fall back to ZEND_CASE chain */
6413 			ZEND_VM_NEXT_OPCODE();
6414 		}
6415 	}
6416 
6417 	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op));
6418 	if (jump_zv != NULL) {
6419 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
6420 		ZEND_VM_CONTINUE();
6421 	} else {
6422 		/* default */
6423 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
6424 		ZEND_VM_CONTINUE();
6425 	}
6426 }
6427 
6428 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6429 {
6430 	USE_OPLINE
6431 
6432 	zval *op, *jump_zv;
6433 	HashTable *jumptable;
6434 
6435 	op = EX_CONSTANT(opline->op1);
6436 	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
6437 
6438 	if (Z_TYPE_P(op) != IS_STRING) {
6439 		ZVAL_DEREF(op);
6440 		if (Z_TYPE_P(op) != IS_STRING) {
6441 			/* Wrong type, fall back to ZEND_CASE chain */
6442 			ZEND_VM_NEXT_OPCODE();
6443 		}
6444 	}
6445 
6446 	jump_zv = zend_hash_find(jumptable, Z_STR_P(op));
6447 	if (jump_zv != NULL) {
6448 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
6449 		ZEND_VM_CONTINUE();
6450 	} else {
6451 		/* default */
6452 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
6453 		ZEND_VM_CONTINUE();
6454 	}
6455 }
6456 
6457 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6458 {
6459 	USE_OPLINE
6460 
6461 	zval *op1;
6462 	HashTable *ht = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
6463 	int result;
6464 
6465 	SAVE_OPLINE();
6466 	op1 = EX_CONSTANT(opline->op1);
6467 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
6468 		result = zend_hash_exists(ht, Z_STR_P(op1));
6469 	} else if (opline->extended_value) {
6470 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
6471 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
6472 		} else {
6473 			result = 0;
6474 		}
6475 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
6476 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
6477 	} else {
6478 		zend_string *key;
6479 		zval key_tmp, result_tmp;
6480 
6481 		result = 0;
6482 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
6483 			ZVAL_STR(&key_tmp, key);
6484 			compare_function(&result_tmp, op1, &key_tmp);
6485 			if (Z_LVAL(result_tmp) == 0) {
6486 				result = 1;
6487 				break;
6488 			}
6489 		} ZEND_HASH_FOREACH_END();
6490 	}
6491 
6492 	ZEND_VM_SMART_BRANCH(result, 1);
6493 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6494 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6495 }
6496 
6497 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6498 {
6499 	USE_OPLINE
6500 
6501 	zval *container, *dim, *value;
6502 	zend_long offset;
6503 
6504 	container = EX_CONSTANT(opline->op1);
6505 	dim = EX_CONSTANT(opline->op2);
6506 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6507 fetch_dim_r_index_array:
6508 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
6509 			offset = Z_LVAL_P(dim);
6510 		} else {
6511 			offset = zval_get_long(dim);
6512 		}
6513 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
6514 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
6515 		if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
6516 			SAVE_OPLINE();
6517 
6518 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6519 		} else {
6520 			ZEND_VM_NEXT_OPCODE();
6521 		}
6522 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
6523 		container = Z_REFVAL_P(container);
6524 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
6525 			goto fetch_dim_r_index_array;
6526 		} else {
6527 			goto fetch_dim_r_index_slow;
6528 		}
6529 	} else {
6530 fetch_dim_r_index_slow:
6531 		SAVE_OPLINE();
6532 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
6533 
6534 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6535 	}
6536 
6537 fetch_dim_r_index_undef:
6538 	ZVAL_NULL(EX_VAR(opline->result.var));
6539 	SAVE_OPLINE();
6540 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
6541 
6542 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6543 }
6544 
6545 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6546 {
6547 	USE_OPLINE
6548 	zend_free_op free_op2;
6549 	zval *op1, *op2;
6550 	int result;
6551 
6552 	SAVE_OPLINE();
6553 	op1 = EX_CONSTANT(opline->op1);
6554 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6555 	result = fast_is_identical_function(op1, op2);
6556 
6557 	zval_ptr_dtor_nogc(free_op2);
6558 	ZEND_VM_SMART_BRANCH(result, 1);
6559 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6560 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6561 }
6562 
6563 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6564 {
6565 	USE_OPLINE
6566 	zend_free_op free_op2;
6567 	zval *op1, *op2;
6568 	int result;
6569 
6570 	SAVE_OPLINE();
6571 	op1 = EX_CONSTANT(opline->op1);
6572 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6573 	result = fast_is_not_identical_function(op1, op2);
6574 
6575 	zval_ptr_dtor_nogc(free_op2);
6576 	ZEND_VM_SMART_BRANCH(result, 1);
6577 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6578 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6579 }
6580 
6581 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6582 {
6583 	USE_OPLINE
6584 
6585 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
6586 
6587 	SAVE_OPLINE();
6588 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
6589 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
6590 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
6591 
6592 		UNDEF_RESULT();
6593 		HANDLE_EXCEPTION();
6594 	}
6595 
6596 	/* Destroy the previously yielded value */
6597 	zval_ptr_dtor(&generator->value);
6598 
6599 	/* Destroy the previously yielded key */
6600 	zval_ptr_dtor(&generator->key);
6601 
6602 	/* Set the new yielded value */
6603 	if (IS_CONST != IS_UNUSED) {
6604 
6605 
6606 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
6607 			/* Constants and temporary variables aren't yieldable by reference,
6608 			 * but we still allow them with a notice. */
6609 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
6610 				zval *value;
6611 
6612 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
6613 
6614 				value = EX_CONSTANT(opline->op1);
6615 				ZVAL_COPY_VALUE(&generator->value, value);
6616 				if (IS_CONST == IS_CONST) {
6617 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
6618 						Z_ADDREF(generator->value);
6619 					}
6620 				}
6621 			} else {
6622 				zval *value_ptr = NULL;
6623 
6624 				/* If a function call result is yielded and the function did
6625 				 * not return by reference we throw a notice. */
6626 				if (IS_CONST == IS_VAR &&
6627 				    (value_ptr == &EG(uninitialized_zval) ||
6628 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
6629 				      !Z_ISREF_P(value_ptr)))) {
6630 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
6631 				} else {
6632 					ZVAL_MAKE_REF(value_ptr);
6633 				}
6634 				ZVAL_COPY(&generator->value, value_ptr);
6635 
6636 			}
6637 		} else {
6638 			zval *value = EX_CONSTANT(opline->op1);
6639 
6640 			/* Consts, temporary variables and references need copying */
6641 			if (IS_CONST == IS_CONST) {
6642 				ZVAL_COPY_VALUE(&generator->value, value);
6643 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
6644 					Z_ADDREF(generator->value);
6645 				}
6646 			} else if (IS_CONST == IS_TMP_VAR) {
6647 				ZVAL_COPY_VALUE(&generator->value, value);
6648             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
6649 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
6650 
6651 			} else {
6652 				ZVAL_COPY_VALUE(&generator->value, value);
6653 				if (IS_CONST == IS_CV) {
6654 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
6655 				}
6656 			}
6657 		}
6658 	} else {
6659 		/* If no value was specified yield null */
6660 		ZVAL_NULL(&generator->value);
6661 	}
6662 
6663 	/* Set the new yielded key */
6664 	if (IS_TMP_VAR != IS_UNUSED) {
6665 		zend_free_op free_op2;
6666 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6667 
6668 		/* Consts, temporary variables and references need copying */
6669 		if (IS_TMP_VAR == IS_CONST) {
6670 			ZVAL_COPY_VALUE(&generator->key, key);
6671 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
6672 				Z_ADDREF(generator->key);
6673 			}
6674 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
6675 			ZVAL_COPY_VALUE(&generator->key, key);
6676 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
6677 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
6678 
6679 		} else {
6680 			ZVAL_COPY_VALUE(&generator->key, key);
6681 			if (IS_TMP_VAR == IS_CV) {
6682 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
6683 			}
6684 		}
6685 
6686 		if (Z_TYPE(generator->key) == IS_LONG
6687 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
6688 		) {
6689 			generator->largest_used_integer_key = Z_LVAL(generator->key);
6690 		}
6691 	} else {
6692 		/* If no key was specified we use auto-increment keys */
6693 		generator->largest_used_integer_key++;
6694 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
6695 	}
6696 
6697 	if (RETURN_VALUE_USED(opline)) {
6698 		/* If the return value of yield is used set the send
6699 		 * target and initialize it to NULL */
6700 		generator->send_target = EX_VAR(opline->result.var);
6701 		ZVAL_NULL(generator->send_target);
6702 	} else {
6703 		generator->send_target = NULL;
6704 	}
6705 
6706 	/* We increment to the next op, so we are at the correct position when the
6707 	 * generator is resumed. */
6708 	ZEND_VM_INC_OPCODE();
6709 
6710 	/* The GOTO VM uses a local opline variable. We need to set the opline
6711 	 * variable in execute_data so we don't resume at an old position. */
6712 	SAVE_OPLINE();
6713 
6714 	ZEND_VM_RETURN();
6715 }
6716 
6717 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6718 {
6719 	USE_OPLINE
6720 	zend_free_op free_op2;
6721 	zval *op1, *op2;
6722 	int result;
6723 
6724 	SAVE_OPLINE();
6725 	op1 = EX_CONSTANT(opline->op1);
6726 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6727 	result = fast_is_identical_function(op1, op2);
6728 
6729 	zval_ptr_dtor_nogc(free_op2);
6730 	ZEND_VM_SMART_BRANCH(result, 1);
6731 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6732 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6733 }
6734 
6735 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6736 {
6737 	USE_OPLINE
6738 	zend_free_op free_op2;
6739 	zval *op1, *op2;
6740 	int result;
6741 
6742 	SAVE_OPLINE();
6743 	op1 = EX_CONSTANT(opline->op1);
6744 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
6745 	result = fast_is_not_identical_function(op1, op2);
6746 
6747 	zval_ptr_dtor_nogc(free_op2);
6748 	ZEND_VM_SMART_BRANCH(result, 1);
6749 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6750 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6751 }
6752 
6753 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
6754 {
6755 	USE_OPLINE
6756 
6757 	zval *varname;
6758 	zval *retval;
6759 
6760 	SAVE_OPLINE();
6761 	varname = EX_CONSTANT(opline->op1);
6762 
6763 	retval = zend_fetch_static_property_address(varname, IS_CONST, opline->op2, IS_VAR, type EXECUTE_DATA_CC);
6764 
6765 	if (UNEXPECTED(retval == NULL)) {
6766 		if (EG(exception)) {
6767 
6768 			ZVAL_UNDEF(EX_VAR(opline->result.var));
6769 			HANDLE_EXCEPTION();
6770 		} else {
6771 			ZEND_ASSERT(type == BP_VAR_IS);
6772 			retval = &EG(uninitialized_zval);
6773 		}
6774 	}
6775 
6776 	if (type == BP_VAR_R || type == BP_VAR_IS) {
6777 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
6778 	} else {
6779 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
6780 	}
6781 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6782 }
6783 
6784 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6785 {
6786 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
6787 }
6788 
6789 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6790 {
6791 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
6792 }
6793 
6794 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6795 {
6796 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
6797 }
6798 
6799 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6800 {
6801 	USE_OPLINE
6802 
6803 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
6804 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
6805 	} else {
6806 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
6807 	}
6808 }
6809 
6810 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6811 {
6812 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
6813 }
6814 
6815 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6816 {
6817 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
6818 }
6819 
6820 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6821 {
6822 	USE_OPLINE
6823 	zval tmp, *varname;
6824 	zend_class_entry *ce;
6825 
6826 
6827 	SAVE_OPLINE();
6828 
6829 	varname = EX_CONSTANT(opline->op1);
6830 
6831 	ZVAL_UNDEF(&tmp);
6832 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
6833 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
6834 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
6835 		}
6836 		ZVAL_STR(&tmp, zval_get_string(varname));
6837 		varname = &tmp;
6838 	}
6839 
6840 	if (IS_VAR == IS_CONST) {
6841 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
6842 		if (UNEXPECTED(ce == NULL)) {
6843 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
6844 			if (UNEXPECTED(ce == NULL)) {
6845 				ZEND_ASSERT(EG(exception));
6846 				if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
6847 					zend_string_release(Z_STR(tmp));
6848 				}
6849 
6850 				HANDLE_EXCEPTION();
6851 			}
6852 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
6853 		}
6854 	} else if (IS_VAR == IS_UNUSED) {
6855 		ce = zend_fetch_class(NULL, opline->op2.num);
6856 		if (UNEXPECTED(ce == NULL)) {
6857 			ZEND_ASSERT(EG(exception));
6858 			if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
6859 				zend_string_release(Z_STR(tmp));
6860 			}
6861 
6862 			HANDLE_EXCEPTION();
6863 		}
6864 	} else {
6865 		ce = Z_CE_P(EX_VAR(opline->op2.var));
6866 	}
6867 	zend_std_unset_static_property(ce, Z_STR_P(varname));
6868 
6869 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
6870 		zend_string_release(Z_STR(tmp));
6871 	}
6872 
6873 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6874 }
6875 
6876 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6877 {
6878 	USE_OPLINE
6879 	zval *value;
6880 	int result;
6881 
6882 	zval tmp, *varname;
6883 	zend_class_entry *ce;
6884 
6885 	SAVE_OPLINE();
6886 	varname = EX_CONSTANT(opline->op1);
6887 	ZVAL_UNDEF(&tmp);
6888 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
6889 		ZVAL_STR(&tmp, zval_get_string(varname));
6890 		varname = &tmp;
6891 	}
6892 
6893 	if (IS_VAR == IS_CONST) {
6894 		if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
6895 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
6896 
6897 			/* check if static properties were destoyed */
6898 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
6899 				value = NULL;
6900 			}
6901 
6902 			goto is_static_prop_return;
6903 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
6904 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
6905 			if (UNEXPECTED(ce == NULL)) {
6906 				ZEND_ASSERT(EG(exception));
6907 				ZVAL_UNDEF(EX_VAR(opline->result.var));
6908 				HANDLE_EXCEPTION();
6909 			}
6910 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
6911 		}
6912 	} else {
6913 		if (IS_VAR == IS_UNUSED) {
6914 			ce = zend_fetch_class(NULL, opline->op2.num);
6915 			if (UNEXPECTED(ce == NULL)) {
6916 				ZEND_ASSERT(EG(exception));
6917 				if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
6918 					zend_string_release(Z_STR(tmp));
6919 				}
6920 
6921 				ZVAL_UNDEF(EX_VAR(opline->result.var));
6922 				HANDLE_EXCEPTION();
6923 			}
6924 		} else {
6925 			ce = Z_CE_P(EX_VAR(opline->op2.var));
6926 		}
6927 		if (IS_CONST == IS_CONST &&
6928 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
6929 
6930 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
6931 
6932 			/* check if static properties were destoyed */
6933 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
6934 				value = NULL;
6935 			}
6936 
6937 			goto is_static_prop_return;
6938 		}
6939 	}
6940 
6941 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
6942 
6943 	if (IS_CONST == IS_CONST && value) {
6944 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
6945 	}
6946 
6947 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
6948 		zend_string_release(Z_STR(tmp));
6949 	}
6950 
6951 is_static_prop_return:
6952 	if (opline->extended_value & ZEND_ISSET) {
6953 		result = value && Z_TYPE_P(value) > IS_NULL &&
6954 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
6955 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
6956 		result = !value || !i_zend_is_true(value);
6957 	}
6958 
6959 	ZEND_VM_SMART_BRANCH(result, 1);
6960 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
6961 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
6962 }
6963 
6964 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
6965 {
6966 	USE_OPLINE
6967 
6968 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
6969 
6970 	SAVE_OPLINE();
6971 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
6972 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
6973 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
6974 
6975 		UNDEF_RESULT();
6976 		HANDLE_EXCEPTION();
6977 	}
6978 
6979 	/* Destroy the previously yielded value */
6980 	zval_ptr_dtor(&generator->value);
6981 
6982 	/* Destroy the previously yielded key */
6983 	zval_ptr_dtor(&generator->key);
6984 
6985 	/* Set the new yielded value */
6986 	if (IS_CONST != IS_UNUSED) {
6987 
6988 
6989 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
6990 			/* Constants and temporary variables aren't yieldable by reference,
6991 			 * but we still allow them with a notice. */
6992 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
6993 				zval *value;
6994 
6995 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
6996 
6997 				value = EX_CONSTANT(opline->op1);
6998 				ZVAL_COPY_VALUE(&generator->value, value);
6999 				if (IS_CONST == IS_CONST) {
7000 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
7001 						Z_ADDREF(generator->value);
7002 					}
7003 				}
7004 			} else {
7005 				zval *value_ptr = NULL;
7006 
7007 				/* If a function call result is yielded and the function did
7008 				 * not return by reference we throw a notice. */
7009 				if (IS_CONST == IS_VAR &&
7010 				    (value_ptr == &EG(uninitialized_zval) ||
7011 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
7012 				      !Z_ISREF_P(value_ptr)))) {
7013 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
7014 				} else {
7015 					ZVAL_MAKE_REF(value_ptr);
7016 				}
7017 				ZVAL_COPY(&generator->value, value_ptr);
7018 
7019 			}
7020 		} else {
7021 			zval *value = EX_CONSTANT(opline->op1);
7022 
7023 			/* Consts, temporary variables and references need copying */
7024 			if (IS_CONST == IS_CONST) {
7025 				ZVAL_COPY_VALUE(&generator->value, value);
7026 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
7027 					Z_ADDREF(generator->value);
7028 				}
7029 			} else if (IS_CONST == IS_TMP_VAR) {
7030 				ZVAL_COPY_VALUE(&generator->value, value);
7031             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
7032 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
7033 
7034 			} else {
7035 				ZVAL_COPY_VALUE(&generator->value, value);
7036 				if (IS_CONST == IS_CV) {
7037 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
7038 				}
7039 			}
7040 		}
7041 	} else {
7042 		/* If no value was specified yield null */
7043 		ZVAL_NULL(&generator->value);
7044 	}
7045 
7046 	/* Set the new yielded key */
7047 	if (IS_VAR != IS_UNUSED) {
7048 		zend_free_op free_op2;
7049 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
7050 
7051 		/* Consts, temporary variables and references need copying */
7052 		if (IS_VAR == IS_CONST) {
7053 			ZVAL_COPY_VALUE(&generator->key, key);
7054 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
7055 				Z_ADDREF(generator->key);
7056 			}
7057 		} else if (IS_VAR == IS_TMP_VAR) {
7058 			ZVAL_COPY_VALUE(&generator->key, key);
7059 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
7060 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
7061 			zval_ptr_dtor_nogc(free_op2);
7062 		} else {
7063 			ZVAL_COPY_VALUE(&generator->key, key);
7064 			if (IS_VAR == IS_CV) {
7065 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
7066 			}
7067 		}
7068 
7069 		if (Z_TYPE(generator->key) == IS_LONG
7070 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
7071 		) {
7072 			generator->largest_used_integer_key = Z_LVAL(generator->key);
7073 		}
7074 	} else {
7075 		/* If no key was specified we use auto-increment keys */
7076 		generator->largest_used_integer_key++;
7077 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
7078 	}
7079 
7080 	if (RETURN_VALUE_USED(opline)) {
7081 		/* If the return value of yield is used set the send
7082 		 * target and initialize it to NULL */
7083 		generator->send_target = EX_VAR(opline->result.var);
7084 		ZVAL_NULL(generator->send_target);
7085 	} else {
7086 		generator->send_target = NULL;
7087 	}
7088 
7089 	/* We increment to the next op, so we are at the correct position when the
7090 	 * generator is resumed. */
7091 	ZEND_VM_INC_OPCODE();
7092 
7093 	/* The GOTO VM uses a local opline variable. We need to set the opline
7094 	 * variable in execute_data so we don't resume at an old position. */
7095 	SAVE_OPLINE();
7096 
7097 	ZEND_VM_RETURN();
7098 }
7099 
7100 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CONST_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
7101 {
7102 	USE_OPLINE
7103 
7104 	zval *varname;
7105 	zval *retval;
7106 	zend_string *name;
7107 	HashTable *target_symbol_table;
7108 
7109 	SAVE_OPLINE();
7110 	varname = EX_CONSTANT(opline->op1);
7111 
7112  	if (IS_CONST == IS_CONST) {
7113 		name = Z_STR_P(varname);
7114 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
7115 		name = Z_STR_P(varname);
7116 		zend_string_addref(name);
7117 	} else {
7118 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
7119 			GET_OP1_UNDEF_CV(varname, BP_VAR_R);
7120 		}
7121 		name = zval_get_string(varname);
7122 	}
7123 
7124 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
7125 	retval = zend_hash_find(target_symbol_table, name);
7126 	if (retval == NULL) {
7127 		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
7128 			zval *result;
7129 
7130 fetch_this:
7131 			result = EX_VAR(opline->result.var);
7132 			switch (type) {
7133 				case BP_VAR_R:
7134 					if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
7135 						ZVAL_OBJ(result, Z_OBJ(EX(This)));
7136 						Z_ADDREF_P(result);
7137 					} else {
7138 						ZVAL_NULL(result);
7139 						zend_error(E_NOTICE,"Undefined variable: this");
7140 					}
7141 					break;
7142 				case BP_VAR_IS:
7143 					if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
7144 						ZVAL_OBJ(result, Z_OBJ(EX(This)));
7145 						Z_ADDREF_P(result);
7146 					} else {
7147 						ZVAL_NULL(result);
7148 					}
7149 					break;
7150 				case BP_VAR_RW:
7151 				case BP_VAR_W:
7152 					ZVAL_UNDEF(result);
7153 					zend_throw_error(NULL, "Cannot re-assign $this");
7154 					break;
7155 				case BP_VAR_UNSET:
7156 					ZVAL_UNDEF(result);
7157 					zend_throw_error(NULL, "Cannot unset $this");
7158 					break;
7159 				EMPTY_SWITCH_DEFAULT_CASE()
7160 			}
7161 			if (IS_CONST != IS_CONST) {
7162 				zend_string_release(name);
7163 			}
7164 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7165 		}
7166 		switch (type) {
7167 			case BP_VAR_R:
7168 			case BP_VAR_UNSET:
7169 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
7170 				/* break missing intentionally */
7171 			case BP_VAR_IS:
7172 				retval = &EG(uninitialized_zval);
7173 				break;
7174 			case BP_VAR_RW:
7175 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
7176 				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
7177 				break;
7178 			case BP_VAR_W:
7179 				retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
7180 				break;
7181 			EMPTY_SWITCH_DEFAULT_CASE()
7182 		}
7183 	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
7184 	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
7185 		retval = Z_INDIRECT_P(retval);
7186 		if (Z_TYPE_P(retval) == IS_UNDEF) {
7187 			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
7188 				goto fetch_this;
7189 			}
7190 			switch (type) {
7191 				case BP_VAR_R:
7192 				case BP_VAR_UNSET:
7193 					zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
7194 					/* break missing intentionally */
7195 				case BP_VAR_IS:
7196 					retval = &EG(uninitialized_zval);
7197 					break;
7198 				case BP_VAR_RW:
7199 					zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
7200 					/* break missing intentionally */
7201 				case BP_VAR_W:
7202 					ZVAL_NULL(retval);
7203 					break;
7204 				EMPTY_SWITCH_DEFAULT_CASE()
7205 			}
7206 		}
7207 	}
7208 
7209 	if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) {
7210 
7211 	}
7212 
7213 	if (IS_CONST != IS_CONST) {
7214 		zend_string_release(name);
7215 	}
7216 
7217 	ZEND_ASSERT(retval != NULL);
7218 	if (type == BP_VAR_R || type == BP_VAR_IS) {
7219 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
7220 	} else {
7221 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
7222 	}
7223 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7224 }
7225 
7226 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7227 {
7228 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7229 }
7230 
7231 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7232 {
7233 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7234 }
7235 
7236 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7237 {
7238 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7239 }
7240 
7241 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7242 {
7243 	USE_OPLINE
7244 
7245 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
7246 		ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7247 	} else {
7248 		ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7249 	}
7250 }
7251 
7252 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7253 {
7254 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7255 }
7256 
7257 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7258 {
7259 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CONST_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7260 }
7261 
7262 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
7263 {
7264 	USE_OPLINE
7265 
7266 	zval *varname;
7267 	zval *retval;
7268 
7269 	SAVE_OPLINE();
7270 	varname = EX_CONSTANT(opline->op1);
7271 
7272 	retval = zend_fetch_static_property_address(varname, IS_CONST, opline->op2, IS_UNUSED, type EXECUTE_DATA_CC);
7273 
7274 	if (UNEXPECTED(retval == NULL)) {
7275 		if (EG(exception)) {
7276 
7277 			ZVAL_UNDEF(EX_VAR(opline->result.var));
7278 			HANDLE_EXCEPTION();
7279 		} else {
7280 			ZEND_ASSERT(type == BP_VAR_IS);
7281 			retval = &EG(uninitialized_zval);
7282 		}
7283 	}
7284 
7285 	if (type == BP_VAR_R || type == BP_VAR_IS) {
7286 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
7287 	} else {
7288 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
7289 	}
7290 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7291 }
7292 
7293 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7294 {
7295 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7296 }
7297 
7298 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7299 {
7300 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7301 }
7302 
7303 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7304 {
7305 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7306 }
7307 
7308 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7309 {
7310 	USE_OPLINE
7311 
7312 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
7313 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7314 	} else {
7315 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7316 	}
7317 }
7318 
7319 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7320 {
7321 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7322 }
7323 
7324 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7325 {
7326 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CONST_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
7327 }
7328 
7329 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7330 {
7331 	USE_OPLINE
7332 	zval *container;
7333 	zend_free_op free_op1;
7334 
7335 	SAVE_OPLINE();
7336 
7337 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
7338         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
7339             zend_throw_error(NULL, "Cannot use temporary expression in write context");
7340 
7341 
7342 			ZVAL_UNDEF(EX_VAR(opline->result.var));
7343 			HANDLE_EXCEPTION();
7344         }
7345 		container = NULL;
7346 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
7347 		if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) {
7348 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
7349 		}
7350 
7351 
7352 	} else {
7353 		if (IS_UNUSED == IS_UNUSED) {
7354 			zend_throw_error(NULL, "Cannot use [] for reading");
7355 
7356 
7357 			ZVAL_UNDEF(EX_VAR(opline->result.var));
7358 			HANDLE_EXCEPTION();
7359 		}
7360 		container = EX_CONSTANT(opline->op1);
7361 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
7362 
7363 
7364 	}
7365 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7366 }
7367 
7368 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7369 {
7370 	USE_OPLINE
7371 	zval *function_name;
7372 	zend_class_entry *ce;
7373 	zend_object *object;
7374 	zend_function *fbc;
7375 	zend_execute_data *call;
7376 
7377 	SAVE_OPLINE();
7378 
7379 	if (IS_CONST == IS_CONST) {
7380 		/* no function found. try a static method in class */
7381 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
7382 		if (UNEXPECTED(ce == NULL)) {
7383 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
7384 			if (UNEXPECTED(ce == NULL)) {
7385 				ZEND_ASSERT(EG(exception));
7386 
7387 				HANDLE_EXCEPTION();
7388 			}
7389 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
7390 		}
7391 	} else if (IS_CONST == IS_UNUSED) {
7392 		ce = zend_fetch_class(NULL, opline->op1.num);
7393 		if (UNEXPECTED(ce == NULL)) {
7394 			ZEND_ASSERT(EG(exception));
7395 
7396 			HANDLE_EXCEPTION();
7397 		}
7398 	} else {
7399 		ce = Z_CE_P(EX_VAR(opline->op1.var));
7400 	}
7401 
7402 	if (IS_CONST == IS_CONST &&
7403 	    IS_UNUSED == IS_CONST &&
7404 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
7405 		/* nothing to do */
7406 	} else if (IS_CONST != IS_CONST &&
7407 	           IS_UNUSED == IS_CONST &&
7408 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
7409 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
7410 	} else if (IS_UNUSED != IS_UNUSED) {
7411 
7412 
7413 		function_name = NULL;
7414 		if (IS_UNUSED != IS_CONST) {
7415 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
7416 				do {
7417 					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
7418 						function_name = Z_REFVAL_P(function_name);
7419 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
7420 							break;
7421 						}
7422 					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
7423 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
7424 						if (UNEXPECTED(EG(exception) != NULL)) {
7425 							HANDLE_EXCEPTION();
7426 						}
7427 					}
7428 					zend_throw_error(NULL, "Function name must be a string");
7429 
7430 					HANDLE_EXCEPTION();
7431 				} while (0);
7432  			}
7433 		}
7434 
7435 		if (ce->get_static_method) {
7436 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
7437 		} else {
7438 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
7439 		}
7440 		if (UNEXPECTED(fbc == NULL)) {
7441 			if (EXPECTED(!EG(exception))) {
7442 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
7443 			}
7444 
7445 			HANDLE_EXCEPTION();
7446 		}
7447 		if (IS_UNUSED == IS_CONST &&
7448 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
7449 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
7450 			if (IS_CONST == IS_CONST) {
7451 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
7452 			} else {
7453 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
7454 			}
7455 		}
7456 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
7457 			init_func_run_time_cache(&fbc->op_array);
7458 		}
7459 		if (IS_UNUSED != IS_CONST) {
7460 
7461 		}
7462 	} else {
7463 		if (UNEXPECTED(ce->constructor == NULL)) {
7464 			zend_throw_error(NULL, "Cannot call constructor");
7465 			HANDLE_EXCEPTION();
7466 		}
7467 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
7468 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
7469 			HANDLE_EXCEPTION();
7470 		}
7471 		fbc = ce->constructor;
7472 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
7473 			init_func_run_time_cache(&fbc->op_array);
7474 		}
7475 	}
7476 
7477 	object = NULL;
7478 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
7479 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
7480 			object = Z_OBJ(EX(This));
7481 			ce = object->ce;
7482 		} else {
7483 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
7484 				/* Allowed for PHP 4 compatibility. */
7485 				zend_error(
7486 					E_DEPRECATED,
7487 					"Non-static method %s::%s() should not be called statically",
7488 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
7489 				if (UNEXPECTED(EG(exception) != NULL)) {
7490 					HANDLE_EXCEPTION();
7491 				}
7492 			} else {
7493 				/* An internal function assumes $this is present and won't check that.
7494 				 * So PHP would crash by allowing the call. */
7495 				zend_throw_error(
7496 					zend_ce_error,
7497 					"Non-static method %s::%s() cannot be called statically",
7498 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
7499 				HANDLE_EXCEPTION();
7500 			}
7501 		}
7502 	}
7503 
7504 	if (IS_CONST == IS_UNUSED) {
7505 		/* previous opcode is ZEND_FETCH_CLASS */
7506 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
7507 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
7508 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
7509 				ce = Z_OBJCE(EX(This));
7510 			} else {
7511 				ce = Z_CE(EX(This));
7512 			}
7513 		}
7514 	}
7515 
7516 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
7517 		fbc, opline->extended_value, ce, object);
7518 	call->prev_execute_data = EX(call);
7519 	EX(call) = call;
7520 
7521 	ZEND_VM_NEXT_OPCODE();
7522 }
7523 
7524 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7525 {
7526 	USE_OPLINE
7527 
7528 	SAVE_OPLINE();
7529 	if (IS_CONST == IS_UNUSED) {
7530 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
7531 	} else {
7532 /* prevents "undefined variable opline" errors */
7533 #if 0 || (IS_CONST != IS_UNUSED)
7534 		zval *retval_ref, *retval_ptr;
7535 
7536 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
7537 
7538 		retval_ref = retval_ptr = EX_CONSTANT(opline->op1);
7539 
7540 		if (IS_CONST == IS_CONST) {
7541 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
7542 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
7543 		} else if (IS_CONST == IS_VAR) {
7544 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
7545 				retval_ptr = Z_INDIRECT_P(retval_ptr);
7546 			}
7547 			ZVAL_DEREF(retval_ptr);
7548 		} else if (IS_CONST == IS_CV) {
7549 			ZVAL_DEREF(retval_ptr);
7550 		}
7551 
7552 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
7553 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
7554 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
7555 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
7556 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
7557 			&& retval_ref != retval_ptr)
7558 		) {
7559 			/* A cast might happen - unwrap the reference if this is a by-value return */
7560 			if (Z_REFCOUNT_P(retval_ref) == 1) {
7561 				ZVAL_UNREF(retval_ref);
7562 			} else {
7563 				Z_DELREF_P(retval_ref);
7564 				ZVAL_COPY(retval_ref, retval_ptr);
7565 			}
7566 			retval_ptr = retval_ref;
7567 		}
7568 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
7569 #endif
7570 	}
7571 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7572 }
7573 
7574 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7575 {
7576 	USE_OPLINE
7577 
7578 	zval *expr_ptr, new_expr;
7579 
7580 	SAVE_OPLINE();
7581 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
7582 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
7583 		expr_ptr = NULL;
7584 		ZVAL_MAKE_REF(expr_ptr);
7585 		Z_ADDREF_P(expr_ptr);
7586 
7587 	} else {
7588 		expr_ptr = EX_CONSTANT(opline->op1);
7589 		if (IS_CONST == IS_TMP_VAR) {
7590 			/* pass */
7591 		} else if (IS_CONST == IS_CONST) {
7592 			if (Z_REFCOUNTED_P(expr_ptr)) {
7593 				Z_ADDREF_P(expr_ptr);
7594 			}
7595 		} else if (IS_CONST == IS_CV) {
7596 			ZVAL_DEREF(expr_ptr);
7597 			if (Z_REFCOUNTED_P(expr_ptr)) {
7598 				Z_ADDREF_P(expr_ptr);
7599 			}
7600 		} else /* if (IS_CONST == IS_VAR) */ {
7601 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
7602 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
7603 
7604 				expr_ptr = Z_REFVAL_P(expr_ptr);
7605 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
7606 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
7607 					expr_ptr = &new_expr;
7608 					efree_size(ref, sizeof(zend_reference));
7609 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
7610 					Z_ADDREF_P(expr_ptr);
7611 				}
7612 			}
7613 		}
7614 	}
7615 
7616 	if (IS_UNUSED != IS_UNUSED) {
7617 
7618 		zval *offset = NULL;
7619 		zend_string *str;
7620 		zend_ulong hval;
7621 
7622 add_again:
7623 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
7624 			str = Z_STR_P(offset);
7625 			if (IS_UNUSED != IS_CONST) {
7626 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
7627 					goto num_index;
7628 				}
7629 			}
7630 str_index:
7631 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
7632 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
7633 			hval = Z_LVAL_P(offset);
7634 num_index:
7635 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
7636 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
7637 			offset = Z_REFVAL_P(offset);
7638 			goto add_again;
7639 		} else if (Z_TYPE_P(offset) == IS_NULL) {
7640 			str = ZSTR_EMPTY_ALLOC();
7641 			goto str_index;
7642 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
7643 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
7644 			goto num_index;
7645 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
7646 			hval = 0;
7647 			goto num_index;
7648 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
7649 			hval = 1;
7650 			goto num_index;
7651 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
7652 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
7653 			str = ZSTR_EMPTY_ALLOC();
7654 			goto str_index;
7655 		} else {
7656 			zend_error(E_WARNING, "Illegal offset type");
7657 			zval_ptr_dtor(expr_ptr);
7658 		}
7659 
7660 	} else {
7661 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
7662 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
7663 			zval_ptr_dtor(expr_ptr);
7664 		}
7665 	}
7666 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7667 }
7668 
7669 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7670 {
7671 	zval *array;
7672 	uint32_t size;
7673 	USE_OPLINE
7674 
7675 	array = EX_VAR(opline->result.var);
7676 	if (IS_CONST != IS_UNUSED) {
7677 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
7678 	} else {
7679 		size = 0;
7680 	}
7681 	ZVAL_NEW_ARR(array);
7682 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
7683 
7684 	if (IS_CONST != IS_UNUSED) {
7685 		/* Explicitly initialize array as not-packed if flag is set */
7686 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
7687 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
7688 		}
7689 	}
7690 
7691 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
7692 }
7693 
7694 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7695 {
7696 	USE_OPLINE
7697 	zval tmp, *varname;
7698 	HashTable *target_symbol_table;
7699 
7700 
7701 	SAVE_OPLINE();
7702 
7703 	varname = EX_CONSTANT(opline->op1);
7704 
7705 	ZVAL_UNDEF(&tmp);
7706 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
7707 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
7708 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
7709 		}
7710 		ZVAL_STR(&tmp, zval_get_string(varname));
7711 		varname = &tmp;
7712 	}
7713 
7714 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
7715 	zend_hash_del_ind(target_symbol_table, Z_STR_P(varname));
7716 
7717 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
7718 		zend_string_release(Z_STR(tmp));
7719 	}
7720 
7721 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7722 }
7723 
7724 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7725 {
7726 	USE_OPLINE
7727 	zval tmp, *varname;
7728 	zend_class_entry *ce;
7729 
7730 
7731 	SAVE_OPLINE();
7732 
7733 	varname = EX_CONSTANT(opline->op1);
7734 
7735 	ZVAL_UNDEF(&tmp);
7736 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
7737 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
7738 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
7739 		}
7740 		ZVAL_STR(&tmp, zval_get_string(varname));
7741 		varname = &tmp;
7742 	}
7743 
7744 	if (IS_UNUSED == IS_CONST) {
7745 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
7746 		if (UNEXPECTED(ce == NULL)) {
7747 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
7748 			if (UNEXPECTED(ce == NULL)) {
7749 				ZEND_ASSERT(EG(exception));
7750 				if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
7751 					zend_string_release(Z_STR(tmp));
7752 				}
7753 
7754 				HANDLE_EXCEPTION();
7755 			}
7756 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
7757 		}
7758 	} else if (IS_UNUSED == IS_UNUSED) {
7759 		ce = zend_fetch_class(NULL, opline->op2.num);
7760 		if (UNEXPECTED(ce == NULL)) {
7761 			ZEND_ASSERT(EG(exception));
7762 			if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
7763 				zend_string_release(Z_STR(tmp));
7764 			}
7765 
7766 			HANDLE_EXCEPTION();
7767 		}
7768 	} else {
7769 		ce = Z_CE_P(EX_VAR(opline->op2.var));
7770 	}
7771 	zend_std_unset_static_property(ce, Z_STR_P(varname));
7772 
7773 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
7774 		zend_string_release(Z_STR(tmp));
7775 	}
7776 
7777 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7778 }
7779 
7780 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7781 {
7782 	USE_OPLINE
7783 	zval *value;
7784 	int result;
7785 
7786 	zval tmp, *varname;
7787 	HashTable *target_symbol_table;
7788 
7789 	SAVE_OPLINE();
7790 	varname = EX_CONSTANT(opline->op1);
7791 	ZVAL_UNDEF(&tmp);
7792 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
7793 		ZVAL_STR(&tmp, zval_get_string(varname));
7794 		varname = &tmp;
7795 	}
7796 
7797 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
7798 	value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname));
7799 
7800 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
7801 		zend_string_release(Z_STR(tmp));
7802 	}
7803 
7804 	if (opline->extended_value & ZEND_ISSET) {
7805 		result = value && Z_TYPE_P(value) > IS_NULL &&
7806 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
7807 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
7808 		result = !value || !i_zend_is_true(value);
7809 	}
7810 
7811 	ZEND_VM_SMART_BRANCH(result, 1);
7812 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
7813 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7814 }
7815 
7816 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7817 {
7818 	USE_OPLINE
7819 	zval *value;
7820 	int result;
7821 
7822 	zval tmp, *varname;
7823 	zend_class_entry *ce;
7824 
7825 	SAVE_OPLINE();
7826 	varname = EX_CONSTANT(opline->op1);
7827 	ZVAL_UNDEF(&tmp);
7828 	if (IS_CONST != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
7829 		ZVAL_STR(&tmp, zval_get_string(varname));
7830 		varname = &tmp;
7831 	}
7832 
7833 	if (IS_UNUSED == IS_CONST) {
7834 		if (IS_CONST == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
7835 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
7836 
7837 			/* check if static properties were destoyed */
7838 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
7839 				value = NULL;
7840 			}
7841 
7842 			goto is_static_prop_return;
7843 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
7844 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
7845 			if (UNEXPECTED(ce == NULL)) {
7846 				ZEND_ASSERT(EG(exception));
7847 				ZVAL_UNDEF(EX_VAR(opline->result.var));
7848 				HANDLE_EXCEPTION();
7849 			}
7850 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
7851 		}
7852 	} else {
7853 		if (IS_UNUSED == IS_UNUSED) {
7854 			ce = zend_fetch_class(NULL, opline->op2.num);
7855 			if (UNEXPECTED(ce == NULL)) {
7856 				ZEND_ASSERT(EG(exception));
7857 				if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
7858 					zend_string_release(Z_STR(tmp));
7859 				}
7860 
7861 				ZVAL_UNDEF(EX_VAR(opline->result.var));
7862 				HANDLE_EXCEPTION();
7863 			}
7864 		} else {
7865 			ce = Z_CE_P(EX_VAR(opline->op2.var));
7866 		}
7867 		if (IS_CONST == IS_CONST &&
7868 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
7869 
7870 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
7871 
7872 			/* check if static properties were destoyed */
7873 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
7874 				value = NULL;
7875 			}
7876 
7877 			goto is_static_prop_return;
7878 		}
7879 	}
7880 
7881 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
7882 
7883 	if (IS_CONST == IS_CONST && value) {
7884 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
7885 	}
7886 
7887 	if (IS_CONST != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
7888 		zend_string_release(Z_STR(tmp));
7889 	}
7890 
7891 is_static_prop_return:
7892 	if (opline->extended_value & ZEND_ISSET) {
7893 		result = value && Z_TYPE_P(value) > IS_NULL &&
7894 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
7895 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
7896 		result = !value || !i_zend_is_true(value);
7897 	}
7898 
7899 	ZEND_VM_SMART_BRANCH(result, 1);
7900 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
7901 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
7902 }
7903 
7904 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7905 {
7906 	USE_OPLINE
7907 	zval *zfunc;
7908 	zval *object;
7909 	zend_class_entry *called_scope;
7910 
7911 	zfunc = zend_hash_find(EG(function_table), Z_STR_P(EX_CONSTANT(opline->op1)));
7912 	ZEND_ASSERT(zfunc != NULL && Z_FUNC_P(zfunc)->type == ZEND_USER_FUNCTION);
7913 
7914 	if (Z_TYPE(EX(This)) == IS_OBJECT) {
7915 		called_scope = Z_OBJCE(EX(This));
7916 		if (UNEXPECTED((Z_FUNC_P(zfunc)->common.fn_flags & ZEND_ACC_STATIC) ||
7917 				(EX(func)->common.fn_flags & ZEND_ACC_STATIC))) {
7918 			object = NULL;
7919 		} else {
7920 			object = &EX(This);
7921 		}
7922 	} else {
7923 		called_scope = Z_CE(EX(This));
7924 		object = NULL;
7925 	}
7926 	zend_create_closure(EX_VAR(opline->result.var), Z_FUNC_P(zfunc),
7927 		EX(func)->op_array.scope, called_scope, object);
7928 
7929 	ZEND_VM_NEXT_OPCODE();
7930 }
7931 
7932 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
7933 {
7934 	USE_OPLINE
7935 
7936 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
7937 
7938 	SAVE_OPLINE();
7939 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
7940 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
7941 
7942 
7943 		UNDEF_RESULT();
7944 		HANDLE_EXCEPTION();
7945 	}
7946 
7947 	/* Destroy the previously yielded value */
7948 	zval_ptr_dtor(&generator->value);
7949 
7950 	/* Destroy the previously yielded key */
7951 	zval_ptr_dtor(&generator->key);
7952 
7953 	/* Set the new yielded value */
7954 	if (IS_CONST != IS_UNUSED) {
7955 
7956 
7957 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
7958 			/* Constants and temporary variables aren't yieldable by reference,
7959 			 * but we still allow them with a notice. */
7960 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
7961 				zval *value;
7962 
7963 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
7964 
7965 				value = EX_CONSTANT(opline->op1);
7966 				ZVAL_COPY_VALUE(&generator->value, value);
7967 				if (IS_CONST == IS_CONST) {
7968 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
7969 						Z_ADDREF(generator->value);
7970 					}
7971 				}
7972 			} else {
7973 				zval *value_ptr = NULL;
7974 
7975 				/* If a function call result is yielded and the function did
7976 				 * not return by reference we throw a notice. */
7977 				if (IS_CONST == IS_VAR &&
7978 				    (value_ptr == &EG(uninitialized_zval) ||
7979 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
7980 				      !Z_ISREF_P(value_ptr)))) {
7981 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
7982 				} else {
7983 					ZVAL_MAKE_REF(value_ptr);
7984 				}
7985 				ZVAL_COPY(&generator->value, value_ptr);
7986 
7987 			}
7988 		} else {
7989 			zval *value = EX_CONSTANT(opline->op1);
7990 
7991 			/* Consts, temporary variables and references need copying */
7992 			if (IS_CONST == IS_CONST) {
7993 				ZVAL_COPY_VALUE(&generator->value, value);
7994 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
7995 					Z_ADDREF(generator->value);
7996 				}
7997 			} else if (IS_CONST == IS_TMP_VAR) {
7998 				ZVAL_COPY_VALUE(&generator->value, value);
7999             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
8000 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
8001 
8002 			} else {
8003 				ZVAL_COPY_VALUE(&generator->value, value);
8004 				if (IS_CONST == IS_CV) {
8005 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
8006 				}
8007 			}
8008 		}
8009 	} else {
8010 		/* If no value was specified yield null */
8011 		ZVAL_NULL(&generator->value);
8012 	}
8013 
8014 	/* Set the new yielded key */
8015 	if (IS_UNUSED != IS_UNUSED) {
8016 
8017 		zval *key = NULL;
8018 
8019 		/* Consts, temporary variables and references need copying */
8020 		if (IS_UNUSED == IS_CONST) {
8021 			ZVAL_COPY_VALUE(&generator->key, key);
8022 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
8023 				Z_ADDREF(generator->key);
8024 			}
8025 		} else if (IS_UNUSED == IS_TMP_VAR) {
8026 			ZVAL_COPY_VALUE(&generator->key, key);
8027 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
8028 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
8029 
8030 		} else {
8031 			ZVAL_COPY_VALUE(&generator->key, key);
8032 			if (IS_UNUSED == IS_CV) {
8033 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
8034 			}
8035 		}
8036 
8037 		if (Z_TYPE(generator->key) == IS_LONG
8038 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
8039 		) {
8040 			generator->largest_used_integer_key = Z_LVAL(generator->key);
8041 		}
8042 	} else {
8043 		/* If no key was specified we use auto-increment keys */
8044 		generator->largest_used_integer_key++;
8045 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
8046 	}
8047 
8048 	if (RETURN_VALUE_USED(opline)) {
8049 		/* If the return value of yield is used set the send
8050 		 * target and initialize it to NULL */
8051 		generator->send_target = EX_VAR(opline->result.var);
8052 		ZVAL_NULL(generator->send_target);
8053 	} else {
8054 		generator->send_target = NULL;
8055 	}
8056 
8057 	/* We increment to the next op, so we are at the correct position when the
8058 	 * generator is resumed. */
8059 	ZEND_VM_INC_OPCODE();
8060 
8061 	/* The GOTO VM uses a local opline variable. We need to set the opline
8062 	 * variable in execute_data so we don't resume at an old position. */
8063 	SAVE_OPLINE();
8064 
8065 	ZEND_VM_RETURN();
8066 }
8067 
8068 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8069 {
8070 	USE_OPLINE
8071 
8072 	zval *op1;
8073 	zend_long count;
8074 
8075 	SAVE_OPLINE();
8076 	op1 = EX_CONSTANT(opline->op1);
8077 	do {
8078 		if (Z_TYPE_P(op1) == IS_ARRAY) {
8079 			count = zend_array_count(Z_ARRVAL_P(op1));
8080 			break;
8081 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
8082 			/* first, we check if the handler is defined */
8083 			if (Z_OBJ_HT_P(op1)->count_elements) {
8084 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
8085 					break;
8086 				}
8087 			}
8088 
8089 			/* if not and the object implements Countable we call its count() method */
8090 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
8091 				zval retval;
8092 
8093 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
8094 				count = zval_get_long(&retval);
8095 				zval_ptr_dtor(&retval);
8096 				break;
8097 			}
8098 
8099 			/* If There's no handler and it doesn't implement Countable then add a warning */
8100 			count = 1;
8101 		} else if (Z_TYPE_P(op1) == IS_NULL) {
8102 			count = 0;
8103 		} else {
8104 			count = 1;
8105 		}
8106 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
8107 	} while (0);
8108 
8109 	ZVAL_LONG(EX_VAR(opline->result.var), count);
8110 
8111 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8112 }
8113 
8114 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8115 {
8116 	USE_OPLINE
8117 
8118 	if (IS_CONST == IS_UNUSED) {
8119 		if (UNEXPECTED(!EX(func)->common.scope)) {
8120 			SAVE_OPLINE();
8121 			zend_error(E_WARNING, "get_class() called without object from outside a class");
8122 			ZVAL_FALSE(EX_VAR(opline->result.var));
8123 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8124 		} else {
8125 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
8126 			ZEND_VM_NEXT_OPCODE();
8127 		}
8128 	} else {
8129 
8130 		zval *op1;
8131 
8132 		SAVE_OPLINE();
8133 		op1 = EX_CONSTANT(opline->op1);
8134 		if (Z_TYPE_P(op1) == IS_OBJECT) {
8135 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
8136 		} else {
8137 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
8138 			ZVAL_FALSE(EX_VAR(opline->result.var));
8139 		}
8140 
8141 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8142 	}
8143 }
8144 
8145 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8146 {
8147 	USE_OPLINE
8148 
8149 	zval *op1;
8150 	zend_string *type;
8151 
8152 	SAVE_OPLINE();
8153 	op1 = EX_CONSTANT(opline->op1);
8154 	type = zend_zval_get_type(op1);
8155 	if (EXPECTED(type)) {
8156 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
8157 	} else {
8158 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
8159 	}
8160 
8161 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8162 }
8163 
8164 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8165 {
8166 	USE_OPLINE
8167 	zend_array *ht;
8168 	uint32_t arg_count, result_size, skip;
8169 
8170 	arg_count = EX_NUM_ARGS();
8171 	if (IS_CONST == IS_CONST) {
8172 		skip = Z_LVAL_P(EX_CONSTANT(opline->op1));
8173 		if (arg_count < skip) {
8174 			result_size = 0;
8175 		} else {
8176 			result_size = arg_count - skip;
8177 		}
8178 	} else {
8179 		skip = 0;
8180 		result_size = arg_count;
8181 	}
8182 
8183 	ht = (zend_array *) emalloc(sizeof(zend_array));
8184 	zend_hash_init(ht, result_size, NULL, ZVAL_PTR_DTOR, 0);
8185 	ZVAL_ARR(EX_VAR(opline->result.var), ht);
8186 
8187 	if (result_size) {
8188 		uint32_t first_extra_arg = EX(func)->op_array.num_args;
8189 		zend_hash_real_init(ht, 1);
8190 		ZEND_HASH_FILL_PACKED(ht) {
8191 			zval *p, *q;
8192 			uint32_t i = skip;
8193 			p = EX_VAR_NUM(i);
8194 			if (arg_count > first_extra_arg) {
8195 				while (i < first_extra_arg) {
8196 					q = p;
8197 					if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
8198 						ZVAL_DEREF(q);
8199 						if (Z_OPT_REFCOUNTED_P(q)) {
8200 							Z_ADDREF_P(q);
8201 						}
8202 					} else {
8203 						q = &EG(uninitialized_zval);
8204 					}
8205 					ZEND_HASH_FILL_ADD(q);
8206 					p++;
8207 					i++;
8208 				}
8209 				if (skip < first_extra_arg) {
8210 					skip = 0;
8211 				} else {
8212 					skip -= first_extra_arg;
8213 				}
8214 				p = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T + skip);
8215 			}
8216 			while (i < arg_count) {
8217 				q = p;
8218 				if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
8219 					ZVAL_DEREF(q);
8220 					if (Z_OPT_REFCOUNTED_P(q)) {
8221 						Z_ADDREF_P(q);
8222 					}
8223 				} else {
8224 					q = &EG(uninitialized_zval);
8225 				}
8226 				ZEND_HASH_FILL_ADD(q);
8227 				p++;
8228 				i++;
8229 			}
8230 		} ZEND_HASH_FILL_END();
8231 		ht->nNumOfElements = result_size;
8232 	}
8233 	ZEND_VM_NEXT_OPCODE();
8234 }
8235 
8236 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8237 {
8238 	USE_OPLINE
8239 
8240 	zval *op1, *op2, *result;
8241 
8242 	op1 = EX_CONSTANT(opline->op1);
8243 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8244 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
8245 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8246 			result = EX_VAR(opline->result.var);
8247 			fast_long_add_function(result, op1, op2);
8248 			ZEND_VM_NEXT_OPCODE();
8249 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8250 			result = EX_VAR(opline->result.var);
8251 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
8252 			ZEND_VM_NEXT_OPCODE();
8253 		}
8254 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
8255 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8256 			result = EX_VAR(opline->result.var);
8257 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
8258 			ZEND_VM_NEXT_OPCODE();
8259 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8260 			result = EX_VAR(opline->result.var);
8261 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
8262 			ZEND_VM_NEXT_OPCODE();
8263 		}
8264 	}
8265 
8266 	SAVE_OPLINE();
8267 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8268 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8269 	}
8270 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8271 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8272 	}
8273 	add_function(EX_VAR(opline->result.var), op1, op2);
8274 
8275 
8276 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8277 }
8278 
8279 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8280 {
8281 	USE_OPLINE
8282 
8283 	zval *op1, *op2, *result;
8284 
8285 	op1 = EX_CONSTANT(opline->op1);
8286 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8287 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
8288 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8289 			result = EX_VAR(opline->result.var);
8290 			fast_long_sub_function(result, op1, op2);
8291 			ZEND_VM_NEXT_OPCODE();
8292 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8293 			result = EX_VAR(opline->result.var);
8294 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
8295 			ZEND_VM_NEXT_OPCODE();
8296 		}
8297 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
8298 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8299 			result = EX_VAR(opline->result.var);
8300 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
8301 			ZEND_VM_NEXT_OPCODE();
8302 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8303 			result = EX_VAR(opline->result.var);
8304 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
8305 			ZEND_VM_NEXT_OPCODE();
8306 		}
8307 	}
8308 
8309 	SAVE_OPLINE();
8310 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8311 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8312 	}
8313 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8314 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8315 	}
8316 	sub_function(EX_VAR(opline->result.var), op1, op2);
8317 
8318 
8319 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8320 }
8321 
8322 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8323 {
8324 	USE_OPLINE
8325 
8326 	zval *op1, *op2, *result;
8327 
8328 	op1 = EX_CONSTANT(opline->op1);
8329 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8330 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
8331 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8332 			zend_long overflow;
8333 
8334 			result = EX_VAR(opline->result.var);
8335 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
8336 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
8337 			ZEND_VM_NEXT_OPCODE();
8338 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8339 			result = EX_VAR(opline->result.var);
8340 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
8341 			ZEND_VM_NEXT_OPCODE();
8342 		}
8343 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
8344 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8345 			result = EX_VAR(opline->result.var);
8346 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
8347 			ZEND_VM_NEXT_OPCODE();
8348 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8349 			result = EX_VAR(opline->result.var);
8350 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
8351 			ZEND_VM_NEXT_OPCODE();
8352 		}
8353 	}
8354 
8355 	SAVE_OPLINE();
8356 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8357 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8358 	}
8359 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8360 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8361 	}
8362 	mul_function(EX_VAR(opline->result.var), op1, op2);
8363 
8364 
8365 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8366 }
8367 
8368 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8369 {
8370 	USE_OPLINE
8371 
8372 	zval *op1, *op2;
8373 
8374 	SAVE_OPLINE();
8375 	op1 = EX_CONSTANT(opline->op1);
8376 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
8377 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
8378 
8379 
8380 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8381 }
8382 
8383 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8384 {
8385 	USE_OPLINE
8386 
8387 	zval *op1, *op2, *result;
8388 
8389 	op1 = EX_CONSTANT(opline->op1);
8390 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8391 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
8392 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8393 			result = EX_VAR(opline->result.var);
8394 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
8395 				SAVE_OPLINE();
8396 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
8397 				ZVAL_UNDEF(EX_VAR(opline->result.var));
8398 				HANDLE_EXCEPTION();
8399 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
8400 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
8401 				ZVAL_LONG(result, 0);
8402 			} else {
8403 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
8404 			}
8405 			ZEND_VM_NEXT_OPCODE();
8406 		}
8407 	}
8408 
8409 	SAVE_OPLINE();
8410 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8411 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8412 	}
8413 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8414 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8415 	}
8416 	mod_function(EX_VAR(opline->result.var), op1, op2);
8417 
8418 
8419 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8420 }
8421 
8422 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8423 {
8424 	USE_OPLINE
8425 
8426 	zval *op1, *op2;
8427 
8428 	op1 = EX_CONSTANT(opline->op1);
8429 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8430 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
8431 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
8432 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
8433 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
8434 		ZEND_VM_NEXT_OPCODE();
8435 	}
8436 
8437 	SAVE_OPLINE();
8438 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8439 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8440 	}
8441 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8442 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8443 	}
8444 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
8445 
8446 
8447 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8448 }
8449 
8450 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8451 {
8452 	USE_OPLINE
8453 
8454 	zval *op1, *op2;
8455 
8456 	op1 = EX_CONSTANT(opline->op1);
8457 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8458 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
8459 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
8460 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
8461 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
8462 		ZEND_VM_NEXT_OPCODE();
8463 	}
8464 
8465 	SAVE_OPLINE();
8466 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8467 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8468 	}
8469 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8470 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8471 	}
8472 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
8473 
8474 
8475 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8476 }
8477 
8478 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8479 {
8480 	USE_OPLINE
8481 
8482 	zval *op1, *op2;
8483 
8484 	SAVE_OPLINE();
8485 	op1 = EX_CONSTANT(opline->op1);
8486 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
8487 	pow_function(EX_VAR(opline->result.var), op1, op2);
8488 
8489 
8490 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8491 }
8492 
8493 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8494 {
8495 	USE_OPLINE
8496 
8497 	zval *op1, *op2;
8498 
8499 	op1 = EX_CONSTANT(opline->op1);
8500 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8501 
8502 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
8503 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
8504 		zend_string *op1_str = Z_STR_P(op1);
8505 		zend_string *op2_str = Z_STR_P(op2);
8506 		zend_string *str;
8507 
8508 		do {
8509 			if (IS_CONST != IS_CONST) {
8510 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
8511 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
8512 
8513 					break;
8514 				}
8515 			}
8516 			if (IS_CV != IS_CONST) {
8517 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
8518 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
8519 
8520 					break;
8521 				}
8522 			}
8523 			if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
8524 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
8525 			    size_t len = ZSTR_LEN(op1_str);
8526 
8527 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
8528 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
8529 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
8530 				break;
8531 			} else {
8532 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
8533 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
8534 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
8535 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
8536 			}
8537 
8538 		} while (0);
8539 
8540 		ZEND_VM_NEXT_OPCODE();
8541 	} else {
8542 		SAVE_OPLINE();
8543 
8544 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
8545 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8546 		}
8547 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
8548 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8549 		}
8550 		concat_function(EX_VAR(opline->result.var), op1, op2);
8551 
8552 
8553 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8554 	}
8555 }
8556 
8557 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8558 {
8559 	USE_OPLINE
8560 
8561 	zval *op1, *op2;
8562 	int result;
8563 
8564 	SAVE_OPLINE();
8565 	op1 = EX_CONSTANT(opline->op1);
8566 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
8567 	result = fast_is_identical_function(op1, op2);
8568 
8569 
8570 	ZEND_VM_SMART_BRANCH(result, 1);
8571 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
8572 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8573 }
8574 
8575 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8576 {
8577 	USE_OPLINE
8578 
8579 	zval *op1, *op2;
8580 	int result;
8581 
8582 	SAVE_OPLINE();
8583 	op1 = EX_CONSTANT(opline->op1);
8584 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
8585 	result = fast_is_not_identical_function(op1, op2);
8586 
8587 
8588 	ZEND_VM_SMART_BRANCH(result, 1);
8589 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
8590 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8591 }
8592 
8593 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8594 {
8595 	USE_OPLINE
8596 
8597 	zval *op1, *op2, *result;
8598 
8599 	op1 = EX_CONSTANT(opline->op1);
8600 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8601 	do {
8602 		int result;
8603 
8604 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
8605 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
8606 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
8607 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
8608 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
8609 			} else {
8610 				break;
8611 			}
8612 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
8613 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
8614 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
8615 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
8616 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
8617 			} else {
8618 				break;
8619 			}
8620 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
8621 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
8622 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
8623 					result = 1;
8624 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
8625 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
8626 						result = 0;
8627 					} else {
8628 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
8629 					}
8630 				} else {
8631 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
8632 				}
8633 
8634 
8635 			} else {
8636 				break;
8637 			}
8638 		} else {
8639 			break;
8640 		}
8641 		ZEND_VM_SMART_BRANCH(result, 0);
8642 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
8643 		ZEND_VM_NEXT_OPCODE();
8644 	} while (0);
8645 
8646 	SAVE_OPLINE();
8647 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
8648 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8649 	}
8650 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
8651 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8652 	}
8653 	result = EX_VAR(opline->result.var);
8654 	compare_function(result, op1, op2);
8655 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
8656 
8657 
8658 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8659 }
8660 
8661 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8662 {
8663 	USE_OPLINE
8664 
8665 	zval *op1, *op2, *result;
8666 
8667 	op1 = EX_CONSTANT(opline->op1);
8668 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8669 	do {
8670 		int result;
8671 
8672 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
8673 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
8674 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
8675 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
8676 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
8677 			} else {
8678 				break;
8679 			}
8680 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
8681 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
8682 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
8683 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
8684 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
8685 			} else {
8686 				break;
8687 			}
8688 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
8689 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
8690 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
8691 					result = 0;
8692 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
8693 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
8694 						result = 1;
8695 					} else {
8696 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
8697 					}
8698 				} else {
8699 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
8700 				}
8701 
8702 
8703 			} else {
8704 				break;
8705 			}
8706 		} else {
8707 			break;
8708 		}
8709 		ZEND_VM_SMART_BRANCH(result, 0);
8710 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
8711 		ZEND_VM_NEXT_OPCODE();
8712 	} while (0);
8713 
8714 	SAVE_OPLINE();
8715 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
8716 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8717 	}
8718 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
8719 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8720 	}
8721 	result = EX_VAR(opline->result.var);
8722 	compare_function(result, op1, op2);
8723 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
8724 
8725 
8726 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8727 }
8728 
8729 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8730 {
8731 	USE_OPLINE
8732 
8733 	zval *op1, *op2, *result;
8734 
8735 	op1 = EX_CONSTANT(opline->op1);
8736 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8737 	do {
8738 		int result;
8739 
8740 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
8741 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8742 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
8743 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8744 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
8745 			} else {
8746 				break;
8747 			}
8748 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
8749 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8750 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
8751 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8752 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
8753 			} else {
8754 				break;
8755 			}
8756 		} else {
8757 			break;
8758 		}
8759 		ZEND_VM_SMART_BRANCH(result, 0);
8760 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
8761 		ZEND_VM_NEXT_OPCODE();
8762 	} while (0);
8763 
8764 	SAVE_OPLINE();
8765 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8766 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8767 	}
8768 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8769 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8770 	}
8771 	result = EX_VAR(opline->result.var);
8772 	compare_function(result, op1, op2);
8773 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
8774 
8775 
8776 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8777 }
8778 
8779 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8780 {
8781 	USE_OPLINE
8782 
8783 	zval *op1, *op2, *result;
8784 
8785 	op1 = EX_CONSTANT(opline->op1);
8786 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8787 	do {
8788 		int result;
8789 
8790 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
8791 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8792 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
8793 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8794 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
8795 			} else {
8796 				break;
8797 			}
8798 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
8799 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
8800 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
8801 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8802 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
8803 			} else {
8804 				break;
8805 			}
8806 		} else {
8807 			break;
8808 		}
8809 		ZEND_VM_SMART_BRANCH(result, 0);
8810 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
8811 		ZEND_VM_NEXT_OPCODE();
8812 	} while (0);
8813 
8814 	SAVE_OPLINE();
8815 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8816 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8817 	}
8818 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8819 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8820 	}
8821 	result = EX_VAR(opline->result.var);
8822 	compare_function(result, op1, op2);
8823 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
8824 
8825 
8826 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8827 }
8828 
8829 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8830 {
8831 	USE_OPLINE
8832 
8833 	zval *op1, *op2;
8834 
8835 	SAVE_OPLINE();
8836 	op1 = EX_CONSTANT(opline->op1);
8837 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
8838 	compare_function(EX_VAR(opline->result.var), op1, op2);
8839 
8840 
8841 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8842 }
8843 
8844 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8845 {
8846 	USE_OPLINE
8847 
8848 	zval *op1, *op2;
8849 
8850 	op1 = EX_CONSTANT(opline->op1);
8851 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8852 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
8853 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8854 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
8855 		ZEND_VM_NEXT_OPCODE();
8856 	}
8857 
8858 	SAVE_OPLINE();
8859 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8860 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8861 	}
8862 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8863 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8864 	}
8865 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
8866 
8867 
8868 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8869 }
8870 
8871 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8872 {
8873 	USE_OPLINE
8874 
8875 	zval *op1, *op2;
8876 
8877 	op1 = EX_CONSTANT(opline->op1);
8878 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8879 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
8880 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8881 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
8882 		ZEND_VM_NEXT_OPCODE();
8883 	}
8884 
8885 	SAVE_OPLINE();
8886 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8887 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8888 	}
8889 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8890 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8891 	}
8892 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
8893 
8894 
8895 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8896 }
8897 
8898 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8899 {
8900 	USE_OPLINE
8901 
8902 	zval *op1, *op2;
8903 
8904 	op1 = EX_CONSTANT(opline->op1);
8905 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8906 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
8907 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
8908 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
8909 		ZEND_VM_NEXT_OPCODE();
8910 	}
8911 
8912 	SAVE_OPLINE();
8913 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
8914 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
8915 	}
8916 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
8917 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
8918 	}
8919 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
8920 
8921 
8922 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8923 }
8924 
8925 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8926 {
8927 	USE_OPLINE
8928 
8929 	zval *op1, *op2;
8930 
8931 	SAVE_OPLINE();
8932 	op1 = EX_CONSTANT(opline->op1);
8933 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
8934 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
8935 
8936 
8937 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8938 }
8939 
8940 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8941 {
8942 	USE_OPLINE
8943 
8944 	zval *container, *dim, *value, *result;
8945 
8946 	SAVE_OPLINE();
8947 	container = EX_CONSTANT(opline->op1);
8948 	dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
8949 	if (IS_CONST != IS_CONST) {
8950 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
8951 fetch_dim_r_array:
8952 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
8953 			result = EX_VAR(opline->result.var);
8954 			ZVAL_COPY_UNREF(result, value);
8955 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
8956 			container = Z_REFVAL_P(container);
8957 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
8958 				goto fetch_dim_r_array;
8959 			} else {
8960 				goto fetch_dim_r_slow;
8961 			}
8962 		} else {
8963 fetch_dim_r_slow:
8964 			result = EX_VAR(opline->result.var);
8965 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
8966 		}
8967 	} else {
8968 		result = EX_VAR(opline->result.var);
8969 		zend_fetch_dimension_address_read_R(result, container, dim, IS_CV EXECUTE_DATA_CC);
8970 	}
8971 
8972 
8973 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8974 }
8975 
8976 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8977 {
8978 	USE_OPLINE
8979 
8980 	zval *container;
8981 
8982 	SAVE_OPLINE();
8983 	container = EX_CONSTANT(opline->op1);
8984 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
8985 
8986 
8987 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
8988 }
8989 
8990 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
8991 {
8992 	USE_OPLINE
8993 	zval *container;
8994 	zend_free_op free_op1;
8995 
8996 	SAVE_OPLINE();
8997 
8998 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
8999         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
9000             zend_throw_error(NULL, "Cannot use temporary expression in write context");
9001 
9002 
9003 			ZVAL_UNDEF(EX_VAR(opline->result.var));
9004 			HANDLE_EXCEPTION();
9005         }
9006 		container = NULL;
9007 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
9008 		if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) {
9009 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
9010 		}
9011 
9012 
9013 	} else {
9014 		if (IS_CV == IS_UNUSED) {
9015 			zend_throw_error(NULL, "Cannot use [] for reading");
9016 
9017 
9018 			ZVAL_UNDEF(EX_VAR(opline->result.var));
9019 			HANDLE_EXCEPTION();
9020 		}
9021 		container = EX_CONSTANT(opline->op1);
9022 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
9023 
9024 
9025 	}
9026 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9027 }
9028 
9029 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9030 {
9031 	USE_OPLINE
9032 
9033 	zval *container;
9034 
9035 	zval *offset;
9036 
9037 	SAVE_OPLINE();
9038 	container = EX_CONSTANT(opline->op1);
9039 
9040 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
9041 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9042 	}
9043 
9044 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
9045 
9046 	if (IS_CONST == IS_CONST ||
9047 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
9048 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
9049 			container = Z_REFVAL_P(container);
9050 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
9051 				goto fetch_obj_r_no_object;
9052 			}
9053 		} else {
9054 			goto fetch_obj_r_no_object;
9055 		}
9056 	}
9057 
9058 	/* here we are sure we are dealing with an object */
9059 	do {
9060 		zend_object *zobj = Z_OBJ_P(container);
9061 		zval *retval;
9062 
9063 		if (IS_CV == IS_CONST &&
9064 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
9065 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
9066 
9067 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
9068 				retval = OBJ_PROP(zobj, prop_offset);
9069 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
9070 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
9071 					break;
9072 				}
9073 			} else if (EXPECTED(zobj->properties != NULL)) {
9074 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
9075 				if (EXPECTED(retval)) {
9076 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
9077 					break;
9078 				}
9079 			}
9080 		}
9081 
9082 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
9083 			zend_string *property_name;
9084 fetch_obj_r_no_object:
9085 			property_name = zval_get_string(offset);
9086 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
9087 			zend_string_release(property_name);
9088 			ZVAL_NULL(EX_VAR(opline->result.var));
9089 		} else {
9090 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
9091 
9092 			if (retval != EX_VAR(opline->result.var)) {
9093 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
9094 			}
9095 		}
9096 	} while (0);
9097 
9098 
9099 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9100 }
9101 
9102 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9103 {
9104 	USE_OPLINE
9105 
9106 	zval *container;
9107 
9108 	zval *offset;
9109 
9110 	SAVE_OPLINE();
9111 	container = EX_CONSTANT(opline->op1);
9112 
9113 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
9114 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9115 	}
9116 
9117 	offset  = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
9118 
9119 	if (IS_CONST == IS_CONST ||
9120 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
9121 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
9122 			container = Z_REFVAL_P(container);
9123 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
9124 				goto fetch_obj_is_no_object;
9125 			}
9126 		} else {
9127 			goto fetch_obj_is_no_object;
9128 		}
9129 	}
9130 
9131 	/* here we are sure we are dealing with an object */
9132 	do {
9133 		zend_object *zobj = Z_OBJ_P(container);
9134 		zval *retval;
9135 
9136 		if (IS_CV == IS_CONST &&
9137 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
9138 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
9139 
9140 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
9141 				retval = OBJ_PROP(zobj, prop_offset);
9142 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
9143 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
9144 					break;
9145 				}
9146 			} else if (EXPECTED(zobj->properties != NULL)) {
9147 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
9148 				if (EXPECTED(retval)) {
9149 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
9150 					break;
9151 				}
9152 			}
9153 		}
9154 
9155 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
9156 fetch_obj_is_no_object:
9157 			ZVAL_NULL(EX_VAR(opline->result.var));
9158 		} else {
9159 
9160 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
9161 
9162 			if (retval != EX_VAR(opline->result.var)) {
9163 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
9164 			}
9165 		}
9166 	} while (0);
9167 
9168 
9169 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9170 }
9171 
9172 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9173 {
9174 	USE_OPLINE
9175 	zval *container;
9176 
9177 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
9178 		/* Behave like FETCH_OBJ_W */
9179 		zend_free_op free_op1;
9180 		zval *property;
9181 
9182 		SAVE_OPLINE();
9183 		container = NULL;
9184 
9185 		if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
9186 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9187 		}
9188 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
9189 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
9190 
9191 
9192 			ZVAL_UNDEF(EX_VAR(opline->result.var));
9193 			HANDLE_EXCEPTION();
9194 		}
9195 		property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
9196 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
9197 
9198 		if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) {
9199 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
9200 		}
9201 
9202 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9203 	} else {
9204 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9205 	}
9206 }
9207 
9208 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9209 {
9210 	USE_OPLINE
9211 
9212 	zval *container;
9213 
9214 	SAVE_OPLINE();
9215 	container = EX_CONSTANT(opline->op1);
9216 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC) EXECUTE_DATA_CC);
9217 
9218 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9219 }
9220 
9221 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9222 {
9223 	USE_OPLINE
9224 
9225 	zval *op1, *op2;
9226 	zend_string *op1_str, *op2_str, *str;
9227 
9228 
9229 	op1 = EX_CONSTANT(opline->op1);
9230 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
9231 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
9232 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
9233 		zend_string *op1_str = Z_STR_P(op1);
9234 		zend_string *op2_str = Z_STR_P(op2);
9235 		zend_string *str;
9236 
9237 		do {
9238 			if (IS_CONST != IS_CONST) {
9239 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
9240 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
9241 
9242 					break;
9243 				}
9244 			}
9245 			if (IS_CV != IS_CONST) {
9246 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
9247 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
9248 
9249 					break;
9250 				}
9251 			}
9252 			if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
9253 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
9254 			    size_t len = ZSTR_LEN(op1_str);
9255 
9256 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
9257 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
9258 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
9259 				break;
9260 			} else {
9261 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
9262 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
9263 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
9264 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
9265 			}
9266 
9267 		} while (0);
9268 
9269 		ZEND_VM_NEXT_OPCODE();
9270 	}
9271 
9272 	SAVE_OPLINE();
9273 	if (IS_CONST == IS_CONST) {
9274 		op1_str = Z_STR_P(op1);
9275 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
9276 		op1_str = zend_string_copy(Z_STR_P(op1));
9277 	} else {
9278 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
9279 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9280 		}
9281 		op1_str = _zval_get_string_func(op1);
9282 	}
9283 	if (IS_CV == IS_CONST) {
9284 		op2_str = Z_STR_P(op2);
9285 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
9286 		op2_str = zend_string_copy(Z_STR_P(op2));
9287 	} else {
9288 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
9289 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9290 		}
9291 		op2_str = _zval_get_string_func(op2);
9292 	}
9293 	do {
9294 		if (IS_CONST != IS_CONST) {
9295 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
9296 				if (IS_CV == IS_CONST) {
9297 					zend_string_addref(op2_str);
9298 				}
9299 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
9300 				zend_string_release(op1_str);
9301 				break;
9302 			}
9303 		}
9304 		if (IS_CV != IS_CONST) {
9305 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
9306 				if (IS_CONST == IS_CONST) {
9307 					zend_string_addref(op1_str);
9308 				}
9309 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
9310 				zend_string_release(op2_str);
9311 				break;
9312 			}
9313 		}
9314 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
9315 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
9316 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
9317 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
9318 		if (IS_CONST != IS_CONST) {
9319 			zend_string_release(op1_str);
9320 		}
9321 		if (IS_CV != IS_CONST) {
9322 			zend_string_release(op2_str);
9323 		}
9324 	} while (0);
9325 
9326 
9327 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9328 }
9329 
9330 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9331 {
9332 	USE_OPLINE
9333 	zval *function_name;
9334 
9335 	zval *object;
9336 	zend_function *fbc;
9337 	zend_class_entry *called_scope;
9338 	zend_object *obj;
9339 	zend_execute_data *call;
9340 	uint32_t call_info;
9341 
9342 	SAVE_OPLINE();
9343 
9344 	object = EX_CONSTANT(opline->op1);
9345 
9346 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
9347 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9348 	}
9349 
9350 	function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
9351 
9352 	if (IS_CV != IS_CONST &&
9353 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
9354 		do {
9355 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
9356 				function_name = Z_REFVAL_P(function_name);
9357 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
9358 					break;
9359 				}
9360 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
9361 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
9362 				if (UNEXPECTED(EG(exception) != NULL)) {
9363 
9364 					HANDLE_EXCEPTION();
9365 				}
9366 			}
9367 			zend_throw_error(NULL, "Method name must be a string");
9368 
9369 
9370 			HANDLE_EXCEPTION();
9371 		} while (0);
9372 	}
9373 
9374 	if (IS_CONST != IS_UNUSED) {
9375 		do {
9376 			if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
9377 				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
9378 					object = Z_REFVAL_P(object);
9379 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
9380 						break;
9381 					}
9382 				}
9383 				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
9384 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
9385 					if (UNEXPECTED(EG(exception) != NULL)) {
9386 
9387 						HANDLE_EXCEPTION();
9388 					}
9389 				}
9390 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
9391 
9392 
9393 				HANDLE_EXCEPTION();
9394 			}
9395 		} while (0);
9396 	}
9397 
9398 	obj = Z_OBJ_P(object);
9399 	called_scope = obj->ce;
9400 
9401 	if (IS_CV == IS_CONST &&
9402 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
9403 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
9404 	} else {
9405 	    zend_object *orig_obj = obj;
9406 
9407 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
9408 			zend_throw_error(NULL, "Object does not support method calls");
9409 
9410 
9411 			HANDLE_EXCEPTION();
9412 		}
9413 
9414 		/* First, locate the function. */
9415 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
9416 		if (UNEXPECTED(fbc == NULL)) {
9417 			if (EXPECTED(!EG(exception))) {
9418 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
9419 			}
9420 
9421 
9422 			HANDLE_EXCEPTION();
9423 		}
9424 		if (IS_CV == IS_CONST &&
9425 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
9426 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
9427 		    EXPECTED(obj == orig_obj)) {
9428 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
9429 		}
9430 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
9431 			init_func_run_time_cache(&fbc->op_array);
9432 		}
9433 	}
9434 
9435 	call_info = ZEND_CALL_NESTED_FUNCTION;
9436 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
9437 		obj = NULL;
9438 	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
9439 		/* CV may be changed indirectly (e.g. when it's a reference) */
9440 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
9441 		GC_REFCOUNT(obj)++; /* For $this pointer */
9442 	}
9443 
9444 
9445 	if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
9446 		HANDLE_EXCEPTION();
9447 	}
9448 
9449 	call = zend_vm_stack_push_call_frame(call_info,
9450 		fbc, opline->extended_value, called_scope, obj);
9451 	call->prev_execute_data = EX(call);
9452 	EX(call) = call;
9453 
9454 	ZEND_VM_NEXT_OPCODE();
9455 }
9456 
9457 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9458 {
9459 	USE_OPLINE
9460 	zval *function_name;
9461 	zend_class_entry *ce;
9462 	zend_object *object;
9463 	zend_function *fbc;
9464 	zend_execute_data *call;
9465 
9466 	SAVE_OPLINE();
9467 
9468 	if (IS_CONST == IS_CONST) {
9469 		/* no function found. try a static method in class */
9470 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
9471 		if (UNEXPECTED(ce == NULL)) {
9472 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
9473 			if (UNEXPECTED(ce == NULL)) {
9474 				ZEND_ASSERT(EG(exception));
9475 
9476 				HANDLE_EXCEPTION();
9477 			}
9478 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
9479 		}
9480 	} else if (IS_CONST == IS_UNUSED) {
9481 		ce = zend_fetch_class(NULL, opline->op1.num);
9482 		if (UNEXPECTED(ce == NULL)) {
9483 			ZEND_ASSERT(EG(exception));
9484 
9485 			HANDLE_EXCEPTION();
9486 		}
9487 	} else {
9488 		ce = Z_CE_P(EX_VAR(opline->op1.var));
9489 	}
9490 
9491 	if (IS_CONST == IS_CONST &&
9492 	    IS_CV == IS_CONST &&
9493 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
9494 		/* nothing to do */
9495 	} else if (IS_CONST != IS_CONST &&
9496 	           IS_CV == IS_CONST &&
9497 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
9498 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
9499 	} else if (IS_CV != IS_UNUSED) {
9500 
9501 
9502 		function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
9503 		if (IS_CV != IS_CONST) {
9504 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
9505 				do {
9506 					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
9507 						function_name = Z_REFVAL_P(function_name);
9508 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
9509 							break;
9510 						}
9511 					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
9512 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
9513 						if (UNEXPECTED(EG(exception) != NULL)) {
9514 							HANDLE_EXCEPTION();
9515 						}
9516 					}
9517 					zend_throw_error(NULL, "Function name must be a string");
9518 
9519 					HANDLE_EXCEPTION();
9520 				} while (0);
9521  			}
9522 		}
9523 
9524 		if (ce->get_static_method) {
9525 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
9526 		} else {
9527 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
9528 		}
9529 		if (UNEXPECTED(fbc == NULL)) {
9530 			if (EXPECTED(!EG(exception))) {
9531 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
9532 			}
9533 
9534 			HANDLE_EXCEPTION();
9535 		}
9536 		if (IS_CV == IS_CONST &&
9537 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
9538 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
9539 			if (IS_CONST == IS_CONST) {
9540 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
9541 			} else {
9542 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
9543 			}
9544 		}
9545 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
9546 			init_func_run_time_cache(&fbc->op_array);
9547 		}
9548 		if (IS_CV != IS_CONST) {
9549 
9550 		}
9551 	} else {
9552 		if (UNEXPECTED(ce->constructor == NULL)) {
9553 			zend_throw_error(NULL, "Cannot call constructor");
9554 			HANDLE_EXCEPTION();
9555 		}
9556 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
9557 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
9558 			HANDLE_EXCEPTION();
9559 		}
9560 		fbc = ce->constructor;
9561 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
9562 			init_func_run_time_cache(&fbc->op_array);
9563 		}
9564 	}
9565 
9566 	object = NULL;
9567 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
9568 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
9569 			object = Z_OBJ(EX(This));
9570 			ce = object->ce;
9571 		} else {
9572 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
9573 				/* Allowed for PHP 4 compatibility. */
9574 				zend_error(
9575 					E_DEPRECATED,
9576 					"Non-static method %s::%s() should not be called statically",
9577 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
9578 				if (UNEXPECTED(EG(exception) != NULL)) {
9579 					HANDLE_EXCEPTION();
9580 				}
9581 			} else {
9582 				/* An internal function assumes $this is present and won't check that.
9583 				 * So PHP would crash by allowing the call. */
9584 				zend_throw_error(
9585 					zend_ce_error,
9586 					"Non-static method %s::%s() cannot be called statically",
9587 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
9588 				HANDLE_EXCEPTION();
9589 			}
9590 		}
9591 	}
9592 
9593 	if (IS_CONST == IS_UNUSED) {
9594 		/* previous opcode is ZEND_FETCH_CLASS */
9595 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
9596 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
9597 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
9598 				ce = Z_OBJCE(EX(This));
9599 			} else {
9600 				ce = Z_CE(EX(This));
9601 			}
9602 		}
9603 	}
9604 
9605 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
9606 		fbc, opline->extended_value, ce, object);
9607 	call->prev_execute_data = EX(call);
9608 	EX(call) = call;
9609 
9610 	ZEND_VM_NEXT_OPCODE();
9611 }
9612 
9613 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9614 {
9615 	USE_OPLINE
9616 
9617 	zval *function_name;
9618 	zend_fcall_info_cache fcc;
9619 	char *error = NULL;
9620 	zend_function *func;
9621 	zend_class_entry *called_scope;
9622 	zend_object *object;
9623 	zend_execute_data *call;
9624 	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
9625 
9626 	SAVE_OPLINE();
9627 	function_name = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
9628 	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
9629 		func = fcc.function_handler;
9630 		called_scope = fcc.called_scope;
9631 		object = fcc.object;
9632 		if (error) {
9633 			efree(error);
9634 			/* This is the only soft error is_callable() can generate */
9635 			zend_error(E_DEPRECATED,
9636 				"Non-static method %s::%s() should not be called statically",
9637 				ZSTR_VAL(func->common.scope->name), ZSTR_VAL(func->common.function_name));
9638 			if (UNEXPECTED(EG(exception) != NULL)) {
9639 
9640 				HANDLE_EXCEPTION();
9641 			}
9642 		}
9643 		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
9644 			/* Delay closure destruction until its invocation */
9645 			ZEND_ASSERT(GC_TYPE((zend_object*)func->common.prototype) == IS_OBJECT);
9646 			GC_REFCOUNT((zend_object*)func->common.prototype)++;
9647 			call_info |= ZEND_CALL_CLOSURE;
9648 			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
9649 				call_info |= ZEND_CALL_FAKE_CLOSURE;
9650 			}
9651 		} else if (object) {
9652 			call_info |= ZEND_CALL_RELEASE_THIS;
9653 			GC_REFCOUNT(object)++; /* For $this pointer */
9654 		}
9655 
9656 		if ((IS_CV & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
9657 			if (call_info & ZEND_CALL_CLOSURE) {
9658 				zend_object_release((zend_object*)func->common.prototype);
9659 			}
9660 			if (call_info & ZEND_CALL_RELEASE_THIS) {
9661 				zend_object_release(object);
9662 			}
9663 			HANDLE_EXCEPTION();
9664 		}
9665 
9666 		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!func->op_array.run_time_cache)) {
9667 			init_func_run_time_cache(&func->op_array);
9668 		}
9669 	} else {
9670 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(EX_CONSTANT(opline->op1)), error);
9671 		efree(error);
9672 
9673 		if (UNEXPECTED(EG(exception))) {
9674 			HANDLE_EXCEPTION();
9675 		}
9676 		func = (zend_function*)&zend_pass_function;
9677 		called_scope = NULL;
9678 		object = NULL;
9679 	}
9680 
9681 	call = zend_vm_stack_push_call_frame(call_info,
9682 		func, opline->extended_value, called_scope, object);
9683 	call->prev_execute_data = EX(call);
9684 	EX(call) = call;
9685 
9686 	ZEND_VM_NEXT_OPCODE();
9687 }
9688 
9689 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CATCH_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9690 {
9691 	USE_OPLINE
9692 	zend_class_entry *ce, *catch_ce;
9693 	zend_object *exception;
9694 	zval *ex;
9695 
9696 	SAVE_OPLINE();
9697 	/* Check whether an exception has been thrown, if not, jump over code */
9698 	zend_exception_restore();
9699 	if (EG(exception) == NULL) {
9700 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
9701 		ZEND_VM_CONTINUE();
9702 	}
9703 	catch_ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
9704 	if (UNEXPECTED(catch_ce == NULL)) {
9705 		catch_ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
9706 
9707 		CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), catch_ce);
9708 	}
9709 	ce = EG(exception)->ce;
9710 
9711 #ifdef HAVE_DTRACE
9712 	if (DTRACE_EXCEPTION_CAUGHT_ENABLED()) {
9713 		DTRACE_EXCEPTION_CAUGHT((char *)ce->name);
9714 	}
9715 #endif /* HAVE_DTRACE */
9716 
9717 	if (ce != catch_ce) {
9718 		if (!catch_ce || !instanceof_function(ce, catch_ce)) {
9719 			if (opline->result.num) {
9720 				zend_rethrow_exception(execute_data);
9721 				HANDLE_EXCEPTION();
9722 			}
9723 			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
9724 			ZEND_VM_CONTINUE();
9725 		}
9726 	}
9727 
9728 	exception = EG(exception);
9729 	ex = EX_VAR(opline->op2.var);
9730 	if (UNEXPECTED(Z_ISREF_P(ex))) {
9731 		ex = Z_REFVAL_P(ex);
9732 	}
9733 	zval_ptr_dtor(ex);
9734 	ZVAL_OBJ(ex, EG(exception));
9735 	if (UNEXPECTED(EG(exception) != exception)) {
9736 		GC_REFCOUNT(EG(exception))++;
9737 		HANDLE_EXCEPTION();
9738 	} else {
9739 		EG(exception) = NULL;
9740 		ZEND_VM_NEXT_OPCODE();
9741 	}
9742 }
9743 
9744 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9745 {
9746 	USE_OPLINE
9747 
9748 	zval *op1, *op2, *result;
9749 
9750 	op1 = EX_CONSTANT(opline->op1);
9751 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
9752 	do {
9753 		int result;
9754 
9755 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
9756 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
9757 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
9758 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
9759 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
9760 			} else {
9761 				break;
9762 			}
9763 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
9764 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
9765 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
9766 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
9767 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
9768 			} else {
9769 				break;
9770 			}
9771 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
9772 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
9773 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
9774 					result = 1;
9775 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
9776 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
9777 						result = 0;
9778 					} else {
9779 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
9780 					}
9781 				} else {
9782 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
9783 				}
9784 
9785 			} else {
9786 				break;
9787 			}
9788 		} else {
9789 			break;
9790 		}
9791 		ZEND_VM_SMART_BRANCH(result, 0);
9792 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
9793 		ZEND_VM_NEXT_OPCODE();
9794 	} while (0);
9795 
9796 	SAVE_OPLINE();
9797 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
9798 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
9799 	}
9800 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
9801 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
9802 	}
9803 	result = EX_VAR(opline->result.var);
9804 	compare_function(result, op1, op2);
9805 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
9806 
9807 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9808 }
9809 
9810 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9811 {
9812 	USE_OPLINE
9813 
9814 	zval *expr_ptr, new_expr;
9815 
9816 	SAVE_OPLINE();
9817 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
9818 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
9819 		expr_ptr = NULL;
9820 		ZVAL_MAKE_REF(expr_ptr);
9821 		Z_ADDREF_P(expr_ptr);
9822 
9823 	} else {
9824 		expr_ptr = EX_CONSTANT(opline->op1);
9825 		if (IS_CONST == IS_TMP_VAR) {
9826 			/* pass */
9827 		} else if (IS_CONST == IS_CONST) {
9828 			if (Z_REFCOUNTED_P(expr_ptr)) {
9829 				Z_ADDREF_P(expr_ptr);
9830 			}
9831 		} else if (IS_CONST == IS_CV) {
9832 			ZVAL_DEREF(expr_ptr);
9833 			if (Z_REFCOUNTED_P(expr_ptr)) {
9834 				Z_ADDREF_P(expr_ptr);
9835 			}
9836 		} else /* if (IS_CONST == IS_VAR) */ {
9837 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
9838 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
9839 
9840 				expr_ptr = Z_REFVAL_P(expr_ptr);
9841 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
9842 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
9843 					expr_ptr = &new_expr;
9844 					efree_size(ref, sizeof(zend_reference));
9845 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
9846 					Z_ADDREF_P(expr_ptr);
9847 				}
9848 			}
9849 		}
9850 	}
9851 
9852 	if (IS_CV != IS_UNUSED) {
9853 
9854 		zval *offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
9855 		zend_string *str;
9856 		zend_ulong hval;
9857 
9858 add_again:
9859 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
9860 			str = Z_STR_P(offset);
9861 			if (IS_CV != IS_CONST) {
9862 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
9863 					goto num_index;
9864 				}
9865 			}
9866 str_index:
9867 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
9868 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
9869 			hval = Z_LVAL_P(offset);
9870 num_index:
9871 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
9872 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
9873 			offset = Z_REFVAL_P(offset);
9874 			goto add_again;
9875 		} else if (Z_TYPE_P(offset) == IS_NULL) {
9876 			str = ZSTR_EMPTY_ALLOC();
9877 			goto str_index;
9878 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
9879 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
9880 			goto num_index;
9881 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
9882 			hval = 0;
9883 			goto num_index;
9884 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
9885 			hval = 1;
9886 			goto num_index;
9887 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
9888 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
9889 			str = ZSTR_EMPTY_ALLOC();
9890 			goto str_index;
9891 		} else {
9892 			zend_error(E_WARNING, "Illegal offset type");
9893 			zval_ptr_dtor(expr_ptr);
9894 		}
9895 
9896 	} else {
9897 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
9898 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
9899 			zval_ptr_dtor(expr_ptr);
9900 		}
9901 	}
9902 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
9903 }
9904 
9905 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9906 {
9907 	zval *array;
9908 	uint32_t size;
9909 	USE_OPLINE
9910 
9911 	array = EX_VAR(opline->result.var);
9912 	if (IS_CONST != IS_UNUSED) {
9913 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
9914 	} else {
9915 		size = 0;
9916 	}
9917 	ZVAL_NEW_ARR(array);
9918 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
9919 
9920 	if (IS_CONST != IS_UNUSED) {
9921 		/* Explicitly initialize array as not-packed if flag is set */
9922 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
9923 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
9924 		}
9925 	}
9926 
9927 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
9928 }
9929 
9930 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
9931 {
9932 	USE_OPLINE
9933 
9934 	zval *container;
9935 	int result;
9936 	zend_ulong hval;
9937 	zval *offset;
9938 
9939 	SAVE_OPLINE();
9940 	container = EX_CONSTANT(opline->op1);
9941 	offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
9942 
9943 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
9944 		HashTable *ht;
9945 		zval *value;
9946 		zend_string *str;
9947 
9948 isset_dim_obj_array:
9949 		ht = Z_ARRVAL_P(container);
9950 isset_again:
9951 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
9952 			str = Z_STR_P(offset);
9953 			if (IS_CV != IS_CONST) {
9954 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
9955 					goto num_index_prop;
9956 				}
9957 			}
9958 str_index_prop:
9959 			value = zend_hash_find_ind(ht, str);
9960 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
9961 			hval = Z_LVAL_P(offset);
9962 num_index_prop:
9963 			value = zend_hash_index_find(ht, hval);
9964 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
9965 			offset = Z_REFVAL_P(offset);
9966 			goto isset_again;
9967 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
9968 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
9969 			goto num_index_prop;
9970 		} else if (Z_TYPE_P(offset) == IS_NULL) {
9971 			str = ZSTR_EMPTY_ALLOC();
9972 			goto str_index_prop;
9973 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
9974 			hval = 0;
9975 			goto num_index_prop;
9976 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
9977 			hval = 1;
9978 			goto num_index_prop;
9979 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
9980 			hval = Z_RES_HANDLE_P(offset);
9981 			goto num_index_prop;
9982 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
9983 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
9984 			str = ZSTR_EMPTY_ALLOC();
9985 			goto str_index_prop;
9986 		} else {
9987 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
9988 			goto isset_not_found;
9989 		}
9990 
9991 		if (opline->extended_value & ZEND_ISSET) {
9992 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
9993 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
9994 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
9995 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
9996 			result = (value == NULL || !i_zend_is_true(value));
9997 		}
9998 		goto isset_dim_obj_exit;
9999 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
10000 		container = Z_REFVAL_P(container);
10001 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
10002 			goto isset_dim_obj_array;
10003 		}
10004 	}
10005 
10006 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
10007 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
10008 	}
10009 
10010 	if ((IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
10011 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
10012 			result =
10013 				((opline->extended_value & ZEND_ISSET) == 0) ^
10014 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
10015 		} else {
10016 			zend_error(E_NOTICE, "Trying to check element of non-array");
10017 			goto isset_not_found;
10018 		}
10019 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
10020 		zend_long lval;
10021 
10022 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
10023 			lval = Z_LVAL_P(offset);
10024 isset_str_offset:
10025 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
10026 				lval += (zend_long)Z_STRLEN_P(container);
10027 			}
10028 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
10029 				if (opline->extended_value & ZEND_ISSET) {
10030 					result = 1;
10031 				} else {
10032 					result = (Z_STRVAL_P(container)[lval] == '0');
10033 				}
10034 			} else {
10035 				goto isset_not_found;
10036 			}
10037 		} else {
10038 			if (IS_CV & (IS_CV|IS_VAR)) {
10039 				ZVAL_DEREF(offset);
10040 			}
10041 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
10042 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
10043 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
10044 				lval = zval_get_long(offset);
10045 				goto isset_str_offset;
10046 			}
10047 			goto isset_not_found;
10048 		}
10049 	} else {
10050 isset_not_found:
10051 		result = ((opline->extended_value & ZEND_ISSET) == 0);
10052 	}
10053 
10054 isset_dim_obj_exit:
10055 
10056 
10057 	ZEND_VM_SMART_BRANCH(result, 1);
10058 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
10059 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10060 }
10061 
10062 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10063 {
10064 	USE_OPLINE
10065 
10066 	zval *container;
10067 	int result;
10068 	zval *offset;
10069 
10070 	SAVE_OPLINE();
10071 	container = EX_CONSTANT(opline->op1);
10072 
10073 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
10074 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
10075 	}
10076 
10077 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
10078 
10079 	if (IS_CONST == IS_CONST ||
10080 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
10081 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
10082 			container = Z_REFVAL_P(container);
10083 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
10084 				goto isset_no_object;
10085 			}
10086 		} else {
10087 			goto isset_no_object;
10088 		}
10089 	}
10090 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
10091 		zend_string *property_name = zval_get_string(offset);
10092 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
10093 		zend_string_release(property_name);
10094 isset_no_object:
10095 		result = ((opline->extended_value & ZEND_ISSET) == 0);
10096 	} else {
10097 		result =
10098 			((opline->extended_value & ZEND_ISSET) == 0) ^
10099 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
10100 	}
10101 
10102 
10103 	ZEND_VM_SMART_BRANCH(result, 1);
10104 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
10105 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10106 }
10107 
10108 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10109 {
10110 	USE_OPLINE
10111 
10112 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
10113 
10114 	SAVE_OPLINE();
10115 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
10116 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
10117 
10118 
10119 		UNDEF_RESULT();
10120 		HANDLE_EXCEPTION();
10121 	}
10122 
10123 	/* Destroy the previously yielded value */
10124 	zval_ptr_dtor(&generator->value);
10125 
10126 	/* Destroy the previously yielded key */
10127 	zval_ptr_dtor(&generator->key);
10128 
10129 	/* Set the new yielded value */
10130 	if (IS_CONST != IS_UNUSED) {
10131 
10132 
10133 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
10134 			/* Constants and temporary variables aren't yieldable by reference,
10135 			 * but we still allow them with a notice. */
10136 			if (IS_CONST & (IS_CONST|IS_TMP_VAR)) {
10137 				zval *value;
10138 
10139 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
10140 
10141 				value = EX_CONSTANT(opline->op1);
10142 				ZVAL_COPY_VALUE(&generator->value, value);
10143 				if (IS_CONST == IS_CONST) {
10144 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
10145 						Z_ADDREF(generator->value);
10146 					}
10147 				}
10148 			} else {
10149 				zval *value_ptr = NULL;
10150 
10151 				/* If a function call result is yielded and the function did
10152 				 * not return by reference we throw a notice. */
10153 				if (IS_CONST == IS_VAR &&
10154 				    (value_ptr == &EG(uninitialized_zval) ||
10155 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
10156 				      !Z_ISREF_P(value_ptr)))) {
10157 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
10158 				} else {
10159 					ZVAL_MAKE_REF(value_ptr);
10160 				}
10161 				ZVAL_COPY(&generator->value, value_ptr);
10162 
10163 			}
10164 		} else {
10165 			zval *value = EX_CONSTANT(opline->op1);
10166 
10167 			/* Consts, temporary variables and references need copying */
10168 			if (IS_CONST == IS_CONST) {
10169 				ZVAL_COPY_VALUE(&generator->value, value);
10170 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
10171 					Z_ADDREF(generator->value);
10172 				}
10173 			} else if (IS_CONST == IS_TMP_VAR) {
10174 				ZVAL_COPY_VALUE(&generator->value, value);
10175             } else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
10176 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
10177 
10178 			} else {
10179 				ZVAL_COPY_VALUE(&generator->value, value);
10180 				if (IS_CONST == IS_CV) {
10181 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
10182 				}
10183 			}
10184 		}
10185 	} else {
10186 		/* If no value was specified yield null */
10187 		ZVAL_NULL(&generator->value);
10188 	}
10189 
10190 	/* Set the new yielded key */
10191 	if (IS_CV != IS_UNUSED) {
10192 
10193 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
10194 
10195 		/* Consts, temporary variables and references need copying */
10196 		if (IS_CV == IS_CONST) {
10197 			ZVAL_COPY_VALUE(&generator->key, key);
10198 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
10199 				Z_ADDREF(generator->key);
10200 			}
10201 		} else if (IS_CV == IS_TMP_VAR) {
10202 			ZVAL_COPY_VALUE(&generator->key, key);
10203 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
10204 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
10205 
10206 		} else {
10207 			ZVAL_COPY_VALUE(&generator->key, key);
10208 			if (IS_CV == IS_CV) {
10209 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
10210 			}
10211 		}
10212 
10213 		if (Z_TYPE(generator->key) == IS_LONG
10214 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
10215 		) {
10216 			generator->largest_used_integer_key = Z_LVAL(generator->key);
10217 		}
10218 	} else {
10219 		/* If no key was specified we use auto-increment keys */
10220 		generator->largest_used_integer_key++;
10221 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
10222 	}
10223 
10224 	if (RETURN_VALUE_USED(opline)) {
10225 		/* If the return value of yield is used set the send
10226 		 * target and initialize it to NULL */
10227 		generator->send_target = EX_VAR(opline->result.var);
10228 		ZVAL_NULL(generator->send_target);
10229 	} else {
10230 		generator->send_target = NULL;
10231 	}
10232 
10233 	/* We increment to the next op, so we are at the correct position when the
10234 	 * generator is resumed. */
10235 	ZEND_VM_INC_OPCODE();
10236 
10237 	/* The GOTO VM uses a local opline variable. We need to set the opline
10238 	 * variable in execute_data so we don't resume at an old position. */
10239 	SAVE_OPLINE();
10240 
10241 	ZEND_VM_RETURN();
10242 }
10243 
10244 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10245 {
10246 	USE_OPLINE
10247 
10248 	zval *container, *dim, *value;
10249 	zend_long offset;
10250 
10251 	container = EX_CONSTANT(opline->op1);
10252 	dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
10253 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
10254 fetch_dim_r_index_array:
10255 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
10256 			offset = Z_LVAL_P(dim);
10257 		} else {
10258 			offset = zval_get_long(dim);
10259 		}
10260 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
10261 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
10262 		if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
10263 			SAVE_OPLINE();
10264 
10265 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10266 		} else {
10267 			ZEND_VM_NEXT_OPCODE();
10268 		}
10269 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
10270 		container = Z_REFVAL_P(container);
10271 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
10272 			goto fetch_dim_r_index_array;
10273 		} else {
10274 			goto fetch_dim_r_index_slow;
10275 		}
10276 	} else {
10277 fetch_dim_r_index_slow:
10278 		SAVE_OPLINE();
10279 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
10280 
10281 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10282 	}
10283 
10284 fetch_dim_r_index_undef:
10285 	ZVAL_NULL(EX_VAR(opline->result.var));
10286 	SAVE_OPLINE();
10287 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
10288 
10289 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10290 }
10291 
10292 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10293 {
10294 	USE_OPLINE
10295 	zend_free_op free_op2;
10296 	zval *op1, *op2, *result;
10297 
10298 	op1 = EX_CONSTANT(opline->op1);
10299 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10300 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
10301 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10302 			result = EX_VAR(opline->result.var);
10303 			fast_long_add_function(result, op1, op2);
10304 			ZEND_VM_NEXT_OPCODE();
10305 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10306 			result = EX_VAR(opline->result.var);
10307 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
10308 			ZEND_VM_NEXT_OPCODE();
10309 		}
10310 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
10311 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10312 			result = EX_VAR(opline->result.var);
10313 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
10314 			ZEND_VM_NEXT_OPCODE();
10315 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10316 			result = EX_VAR(opline->result.var);
10317 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
10318 			ZEND_VM_NEXT_OPCODE();
10319 		}
10320 	}
10321 
10322 	SAVE_OPLINE();
10323 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10324 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10325 	}
10326 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10327 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10328 	}
10329 	add_function(EX_VAR(opline->result.var), op1, op2);
10330 
10331 	zval_ptr_dtor_nogc(free_op2);
10332 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10333 }
10334 
10335 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10336 {
10337 	USE_OPLINE
10338 	zend_free_op free_op2;
10339 	zval *op1, *op2, *result;
10340 
10341 	op1 = EX_CONSTANT(opline->op1);
10342 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10343 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
10344 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10345 			result = EX_VAR(opline->result.var);
10346 			fast_long_sub_function(result, op1, op2);
10347 			ZEND_VM_NEXT_OPCODE();
10348 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10349 			result = EX_VAR(opline->result.var);
10350 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
10351 			ZEND_VM_NEXT_OPCODE();
10352 		}
10353 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
10354 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10355 			result = EX_VAR(opline->result.var);
10356 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
10357 			ZEND_VM_NEXT_OPCODE();
10358 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10359 			result = EX_VAR(opline->result.var);
10360 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
10361 			ZEND_VM_NEXT_OPCODE();
10362 		}
10363 	}
10364 
10365 	SAVE_OPLINE();
10366 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10367 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10368 	}
10369 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10370 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10371 	}
10372 	sub_function(EX_VAR(opline->result.var), op1, op2);
10373 
10374 	zval_ptr_dtor_nogc(free_op2);
10375 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10376 }
10377 
10378 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10379 {
10380 	USE_OPLINE
10381 	zend_free_op free_op2;
10382 	zval *op1, *op2, *result;
10383 
10384 	op1 = EX_CONSTANT(opline->op1);
10385 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10386 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
10387 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10388 			zend_long overflow;
10389 
10390 			result = EX_VAR(opline->result.var);
10391 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
10392 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
10393 			ZEND_VM_NEXT_OPCODE();
10394 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10395 			result = EX_VAR(opline->result.var);
10396 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
10397 			ZEND_VM_NEXT_OPCODE();
10398 		}
10399 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
10400 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10401 			result = EX_VAR(opline->result.var);
10402 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
10403 			ZEND_VM_NEXT_OPCODE();
10404 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10405 			result = EX_VAR(opline->result.var);
10406 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
10407 			ZEND_VM_NEXT_OPCODE();
10408 		}
10409 	}
10410 
10411 	SAVE_OPLINE();
10412 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10413 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10414 	}
10415 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10416 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10417 	}
10418 	mul_function(EX_VAR(opline->result.var), op1, op2);
10419 
10420 	zval_ptr_dtor_nogc(free_op2);
10421 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10422 }
10423 
10424 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10425 {
10426 	USE_OPLINE
10427 	zend_free_op free_op2;
10428 	zval *op1, *op2;
10429 
10430 	SAVE_OPLINE();
10431 	op1 = EX_CONSTANT(opline->op1);
10432 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10433 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
10434 
10435 	zval_ptr_dtor_nogc(free_op2);
10436 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10437 }
10438 
10439 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10440 {
10441 	USE_OPLINE
10442 	zend_free_op free_op2;
10443 	zval *op1, *op2, *result;
10444 
10445 	op1 = EX_CONSTANT(opline->op1);
10446 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10447 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
10448 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10449 			result = EX_VAR(opline->result.var);
10450 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
10451 				SAVE_OPLINE();
10452 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
10453 				ZVAL_UNDEF(EX_VAR(opline->result.var));
10454 				HANDLE_EXCEPTION();
10455 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
10456 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
10457 				ZVAL_LONG(result, 0);
10458 			} else {
10459 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
10460 			}
10461 			ZEND_VM_NEXT_OPCODE();
10462 		}
10463 	}
10464 
10465 	SAVE_OPLINE();
10466 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10467 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10468 	}
10469 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10470 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10471 	}
10472 	mod_function(EX_VAR(opline->result.var), op1, op2);
10473 
10474 	zval_ptr_dtor_nogc(free_op2);
10475 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10476 }
10477 
10478 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10479 {
10480 	USE_OPLINE
10481 	zend_free_op free_op2;
10482 	zval *op1, *op2;
10483 
10484 	op1 = EX_CONSTANT(opline->op1);
10485 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10486 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
10487 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
10488 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
10489 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
10490 		ZEND_VM_NEXT_OPCODE();
10491 	}
10492 
10493 	SAVE_OPLINE();
10494 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10495 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10496 	}
10497 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10498 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10499 	}
10500 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
10501 
10502 	zval_ptr_dtor_nogc(free_op2);
10503 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10504 }
10505 
10506 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10507 {
10508 	USE_OPLINE
10509 	zend_free_op free_op2;
10510 	zval *op1, *op2;
10511 
10512 	op1 = EX_CONSTANT(opline->op1);
10513 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10514 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
10515 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
10516 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
10517 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
10518 		ZEND_VM_NEXT_OPCODE();
10519 	}
10520 
10521 	SAVE_OPLINE();
10522 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10523 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10524 	}
10525 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10526 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10527 	}
10528 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
10529 
10530 	zval_ptr_dtor_nogc(free_op2);
10531 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10532 }
10533 
10534 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10535 {
10536 	USE_OPLINE
10537 	zend_free_op free_op2;
10538 	zval *op1, *op2;
10539 
10540 	SAVE_OPLINE();
10541 	op1 = EX_CONSTANT(opline->op1);
10542 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10543 	pow_function(EX_VAR(opline->result.var), op1, op2);
10544 
10545 	zval_ptr_dtor_nogc(free_op2);
10546 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10547 }
10548 
10549 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10550 {
10551 	USE_OPLINE
10552 	zend_free_op free_op2;
10553 	zval *op1, *op2;
10554 
10555 	op1 = EX_CONSTANT(opline->op1);
10556 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10557 
10558 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
10559 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
10560 		zend_string *op1_str = Z_STR_P(op1);
10561 		zend_string *op2_str = Z_STR_P(op2);
10562 		zend_string *str;
10563 
10564 		do {
10565 			if (IS_CONST != IS_CONST) {
10566 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
10567 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
10568 
10569 					break;
10570 				}
10571 			}
10572 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
10573 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
10574 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
10575 
10576 					break;
10577 				}
10578 			}
10579 			if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
10580 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
10581 			    size_t len = ZSTR_LEN(op1_str);
10582 
10583 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
10584 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10585 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
10586 				break;
10587 			} else {
10588 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
10589 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
10590 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
10591 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
10592 			}
10593 
10594 		} while (0);
10595 		zval_ptr_dtor_nogc(free_op2);
10596 		ZEND_VM_NEXT_OPCODE();
10597 	} else {
10598 		SAVE_OPLINE();
10599 
10600 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
10601 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10602 		}
10603 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
10604 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10605 		}
10606 		concat_function(EX_VAR(opline->result.var), op1, op2);
10607 
10608 		zval_ptr_dtor_nogc(free_op2);
10609 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10610 	}
10611 }
10612 
10613 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10614 {
10615 	USE_OPLINE
10616 	zend_free_op free_op2;
10617 	zval *op1, *op2, *result;
10618 
10619 	op1 = EX_CONSTANT(opline->op1);
10620 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10621 	do {
10622 		int result;
10623 
10624 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
10625 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
10626 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
10627 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
10628 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
10629 			} else {
10630 				break;
10631 			}
10632 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
10633 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
10634 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
10635 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
10636 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
10637 			} else {
10638 				break;
10639 			}
10640 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
10641 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
10642 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
10643 					result = 1;
10644 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
10645 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
10646 						result = 0;
10647 					} else {
10648 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
10649 					}
10650 				} else {
10651 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
10652 				}
10653 
10654 				zval_ptr_dtor_nogc(free_op2);
10655 			} else {
10656 				break;
10657 			}
10658 		} else {
10659 			break;
10660 		}
10661 		ZEND_VM_SMART_BRANCH(result, 0);
10662 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
10663 		ZEND_VM_NEXT_OPCODE();
10664 	} while (0);
10665 
10666 	SAVE_OPLINE();
10667 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
10668 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10669 	}
10670 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
10671 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10672 	}
10673 	result = EX_VAR(opline->result.var);
10674 	compare_function(result, op1, op2);
10675 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
10676 
10677 	zval_ptr_dtor_nogc(free_op2);
10678 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10679 }
10680 
10681 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10682 {
10683 	USE_OPLINE
10684 	zend_free_op free_op2;
10685 	zval *op1, *op2, *result;
10686 
10687 	op1 = EX_CONSTANT(opline->op1);
10688 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10689 	do {
10690 		int result;
10691 
10692 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
10693 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
10694 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
10695 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
10696 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
10697 			} else {
10698 				break;
10699 			}
10700 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
10701 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
10702 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
10703 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
10704 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
10705 			} else {
10706 				break;
10707 			}
10708 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
10709 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
10710 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
10711 					result = 0;
10712 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
10713 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
10714 						result = 1;
10715 					} else {
10716 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
10717 					}
10718 				} else {
10719 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
10720 				}
10721 
10722 				zval_ptr_dtor_nogc(free_op2);
10723 			} else {
10724 				break;
10725 			}
10726 		} else {
10727 			break;
10728 		}
10729 		ZEND_VM_SMART_BRANCH(result, 0);
10730 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
10731 		ZEND_VM_NEXT_OPCODE();
10732 	} while (0);
10733 
10734 	SAVE_OPLINE();
10735 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
10736 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10737 	}
10738 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
10739 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10740 	}
10741 	result = EX_VAR(opline->result.var);
10742 	compare_function(result, op1, op2);
10743 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
10744 
10745 	zval_ptr_dtor_nogc(free_op2);
10746 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10747 }
10748 
10749 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10750 {
10751 	USE_OPLINE
10752 	zend_free_op free_op2;
10753 	zval *op1, *op2, *result;
10754 
10755 	op1 = EX_CONSTANT(opline->op1);
10756 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10757 	do {
10758 		int result;
10759 
10760 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
10761 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10762 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
10763 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10764 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
10765 			} else {
10766 				break;
10767 			}
10768 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
10769 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10770 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
10771 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10772 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
10773 			} else {
10774 				break;
10775 			}
10776 		} else {
10777 			break;
10778 		}
10779 		ZEND_VM_SMART_BRANCH(result, 0);
10780 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
10781 		ZEND_VM_NEXT_OPCODE();
10782 	} while (0);
10783 
10784 	SAVE_OPLINE();
10785 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10786 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10787 	}
10788 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10789 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10790 	}
10791 	result = EX_VAR(opline->result.var);
10792 	compare_function(result, op1, op2);
10793 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
10794 
10795 	zval_ptr_dtor_nogc(free_op2);
10796 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10797 }
10798 
10799 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10800 {
10801 	USE_OPLINE
10802 	zend_free_op free_op2;
10803 	zval *op1, *op2, *result;
10804 
10805 	op1 = EX_CONSTANT(opline->op1);
10806 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10807 	do {
10808 		int result;
10809 
10810 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
10811 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10812 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
10813 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10814 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
10815 			} else {
10816 				break;
10817 			}
10818 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
10819 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
10820 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
10821 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10822 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
10823 			} else {
10824 				break;
10825 			}
10826 		} else {
10827 			break;
10828 		}
10829 		ZEND_VM_SMART_BRANCH(result, 0);
10830 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
10831 		ZEND_VM_NEXT_OPCODE();
10832 	} while (0);
10833 
10834 	SAVE_OPLINE();
10835 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10836 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10837 	}
10838 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10839 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10840 	}
10841 	result = EX_VAR(opline->result.var);
10842 	compare_function(result, op1, op2);
10843 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
10844 
10845 	zval_ptr_dtor_nogc(free_op2);
10846 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10847 }
10848 
10849 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10850 {
10851 	USE_OPLINE
10852 	zend_free_op free_op2;
10853 	zval *op1, *op2;
10854 
10855 	SAVE_OPLINE();
10856 	op1 = EX_CONSTANT(opline->op1);
10857 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10858 	compare_function(EX_VAR(opline->result.var), op1, op2);
10859 
10860 	zval_ptr_dtor_nogc(free_op2);
10861 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10862 }
10863 
10864 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10865 {
10866 	USE_OPLINE
10867 	zend_free_op free_op2;
10868 	zval *op1, *op2;
10869 
10870 	op1 = EX_CONSTANT(opline->op1);
10871 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10872 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
10873 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10874 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
10875 		ZEND_VM_NEXT_OPCODE();
10876 	}
10877 
10878 	SAVE_OPLINE();
10879 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10880 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10881 	}
10882 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10883 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10884 	}
10885 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
10886 
10887 	zval_ptr_dtor_nogc(free_op2);
10888 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10889 }
10890 
10891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10892 {
10893 	USE_OPLINE
10894 	zend_free_op free_op2;
10895 	zval *op1, *op2;
10896 
10897 	op1 = EX_CONSTANT(opline->op1);
10898 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10899 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
10900 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10901 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
10902 		ZEND_VM_NEXT_OPCODE();
10903 	}
10904 
10905 	SAVE_OPLINE();
10906 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10907 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10908 	}
10909 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10910 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10911 	}
10912 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
10913 
10914 	zval_ptr_dtor_nogc(free_op2);
10915 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10916 }
10917 
10918 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10919 {
10920 	USE_OPLINE
10921 	zend_free_op free_op2;
10922 	zval *op1, *op2;
10923 
10924 	op1 = EX_CONSTANT(opline->op1);
10925 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10926 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
10927 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
10928 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
10929 		ZEND_VM_NEXT_OPCODE();
10930 	}
10931 
10932 	SAVE_OPLINE();
10933 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
10934 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
10935 	}
10936 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
10937 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
10938 	}
10939 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
10940 
10941 	zval_ptr_dtor_nogc(free_op2);
10942 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10943 }
10944 
10945 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10946 {
10947 	USE_OPLINE
10948 	zend_free_op free_op2;
10949 	zval *op1, *op2;
10950 
10951 	SAVE_OPLINE();
10952 	op1 = EX_CONSTANT(opline->op1);
10953 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10954 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
10955 
10956 	zval_ptr_dtor_nogc(free_op2);
10957 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10958 }
10959 
10960 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10961 {
10962 	USE_OPLINE
10963 	zend_free_op free_op2;
10964 	zval *container, *dim, *value, *result;
10965 
10966 	SAVE_OPLINE();
10967 	container = EX_CONSTANT(opline->op1);
10968 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
10969 	if (IS_CONST != IS_CONST) {
10970 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
10971 fetch_dim_r_array:
10972 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, (IS_TMP_VAR|IS_VAR), BP_VAR_R EXECUTE_DATA_CC);
10973 			result = EX_VAR(opline->result.var);
10974 			ZVAL_COPY_UNREF(result, value);
10975 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
10976 			container = Z_REFVAL_P(container);
10977 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
10978 				goto fetch_dim_r_array;
10979 			} else {
10980 				goto fetch_dim_r_slow;
10981 			}
10982 		} else {
10983 fetch_dim_r_slow:
10984 			result = EX_VAR(opline->result.var);
10985 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
10986 		}
10987 	} else {
10988 		result = EX_VAR(opline->result.var);
10989 		zend_fetch_dimension_address_read_R(result, container, dim, (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
10990 	}
10991 	zval_ptr_dtor_nogc(free_op2);
10992 
10993 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
10994 }
10995 
10996 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
10997 {
10998 	USE_OPLINE
10999 	zend_free_op free_op2;
11000 	zval *container;
11001 
11002 	SAVE_OPLINE();
11003 	container = EX_CONSTANT(opline->op1);
11004 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
11005 	zval_ptr_dtor_nogc(free_op2);
11006 
11007 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11008 }
11009 
11010 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11011 {
11012 	USE_OPLINE
11013 	zval *container;
11014 	zend_free_op free_op1, free_op2;
11015 
11016 	SAVE_OPLINE();
11017 
11018 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
11019         if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
11020             zend_throw_error(NULL, "Cannot use temporary expression in write context");
11021 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
11022 
11023 			ZVAL_UNDEF(EX_VAR(opline->result.var));
11024 			HANDLE_EXCEPTION();
11025         }
11026 		container = NULL;
11027 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
11028 		if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) {
11029 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
11030 		}
11031 		zval_ptr_dtor_nogc(free_op2);
11032 
11033 	} else {
11034 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
11035 			zend_throw_error(NULL, "Cannot use [] for reading");
11036 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
11037 
11038 			ZVAL_UNDEF(EX_VAR(opline->result.var));
11039 			HANDLE_EXCEPTION();
11040 		}
11041 		container = EX_CONSTANT(opline->op1);
11042 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
11043 		zval_ptr_dtor_nogc(free_op2);
11044 
11045 	}
11046 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11047 }
11048 
11049 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11050 {
11051 	USE_OPLINE
11052 
11053 	zval *container;
11054 	zend_free_op free_op2;
11055 	zval *offset;
11056 
11057 	SAVE_OPLINE();
11058 	container = EX_CONSTANT(opline->op1);
11059 
11060 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
11061 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
11062 	}
11063 
11064 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11065 
11066 	if (IS_CONST == IS_CONST ||
11067 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
11068 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
11069 			container = Z_REFVAL_P(container);
11070 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
11071 				goto fetch_obj_r_no_object;
11072 			}
11073 		} else {
11074 			goto fetch_obj_r_no_object;
11075 		}
11076 	}
11077 
11078 	/* here we are sure we are dealing with an object */
11079 	do {
11080 		zend_object *zobj = Z_OBJ_P(container);
11081 		zval *retval;
11082 
11083 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
11084 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
11085 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
11086 
11087 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
11088 				retval = OBJ_PROP(zobj, prop_offset);
11089 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
11090 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
11091 					break;
11092 				}
11093 			} else if (EXPECTED(zobj->properties != NULL)) {
11094 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
11095 				if (EXPECTED(retval)) {
11096 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
11097 					break;
11098 				}
11099 			}
11100 		}
11101 
11102 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
11103 			zend_string *property_name;
11104 fetch_obj_r_no_object:
11105 			property_name = zval_get_string(offset);
11106 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
11107 			zend_string_release(property_name);
11108 			ZVAL_NULL(EX_VAR(opline->result.var));
11109 		} else {
11110 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
11111 
11112 			if (retval != EX_VAR(opline->result.var)) {
11113 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
11114 			}
11115 		}
11116 	} while (0);
11117 
11118 	zval_ptr_dtor_nogc(free_op2);
11119 
11120 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11121 }
11122 
11123 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11124 {
11125 	USE_OPLINE
11126 
11127 	zval *container;
11128 	zend_free_op free_op2;
11129 	zval *offset;
11130 
11131 	SAVE_OPLINE();
11132 	container = EX_CONSTANT(opline->op1);
11133 
11134 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
11135 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
11136 	}
11137 
11138 	offset  = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11139 
11140 	if (IS_CONST == IS_CONST ||
11141 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
11142 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
11143 			container = Z_REFVAL_P(container);
11144 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
11145 				goto fetch_obj_is_no_object;
11146 			}
11147 		} else {
11148 			goto fetch_obj_is_no_object;
11149 		}
11150 	}
11151 
11152 	/* here we are sure we are dealing with an object */
11153 	do {
11154 		zend_object *zobj = Z_OBJ_P(container);
11155 		zval *retval;
11156 
11157 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
11158 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
11159 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
11160 
11161 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
11162 				retval = OBJ_PROP(zobj, prop_offset);
11163 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
11164 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
11165 					break;
11166 				}
11167 			} else if (EXPECTED(zobj->properties != NULL)) {
11168 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
11169 				if (EXPECTED(retval)) {
11170 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
11171 					break;
11172 				}
11173 			}
11174 		}
11175 
11176 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
11177 fetch_obj_is_no_object:
11178 			ZVAL_NULL(EX_VAR(opline->result.var));
11179 		} else {
11180 
11181 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
11182 
11183 			if (retval != EX_VAR(opline->result.var)) {
11184 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
11185 			}
11186 		}
11187 	} while (0);
11188 
11189 	zval_ptr_dtor_nogc(free_op2);
11190 
11191 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11192 }
11193 
11194 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11195 {
11196 	USE_OPLINE
11197 	zval *container;
11198 
11199 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
11200 		/* Behave like FETCH_OBJ_W */
11201 		zend_free_op free_op1, free_op2;
11202 		zval *property;
11203 
11204 		SAVE_OPLINE();
11205 		container = NULL;
11206 
11207 		if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
11208 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
11209 		}
11210 		if ((IS_CONST & (IS_CONST|IS_TMP_VAR))) {
11211 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
11212 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
11213 
11214 			ZVAL_UNDEF(EX_VAR(opline->result.var));
11215 			HANDLE_EXCEPTION();
11216 		}
11217 		property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11218 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CONST, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
11219 		zval_ptr_dtor_nogc(free_op2);
11220 		if (IS_CONST == IS_VAR && READY_TO_DESTROY(free_op1)) {
11221 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
11222 		}
11223 
11224 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11225 	} else {
11226 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
11227 	}
11228 }
11229 
11230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11231 {
11232 	USE_OPLINE
11233 	zend_free_op free_op2;
11234 	zval *container;
11235 
11236 	SAVE_OPLINE();
11237 	container = EX_CONSTANT(opline->op1);
11238 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC) EXECUTE_DATA_CC);
11239 	zval_ptr_dtor_nogc(free_op2);
11240 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11241 }
11242 
11243 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11244 {
11245 	USE_OPLINE
11246 	zend_free_op free_op2;
11247 	zval *op1, *op2;
11248 	zend_string *op1_str, *op2_str, *str;
11249 
11250 
11251 	op1 = EX_CONSTANT(opline->op1);
11252 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11253 	if ((IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
11254 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
11255 		zend_string *op1_str = Z_STR_P(op1);
11256 		zend_string *op2_str = Z_STR_P(op2);
11257 		zend_string *str;
11258 
11259 		do {
11260 			if (IS_CONST != IS_CONST) {
11261 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
11262 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
11263 
11264 					break;
11265 				}
11266 			}
11267 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
11268 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
11269 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
11270 
11271 					break;
11272 				}
11273 			}
11274 			if (IS_CONST != IS_CONST && IS_CONST != IS_CV &&
11275 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
11276 			    size_t len = ZSTR_LEN(op1_str);
11277 
11278 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
11279 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
11280 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
11281 				break;
11282 			} else {
11283 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
11284 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
11285 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
11286 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
11287 			}
11288 
11289 		} while (0);
11290 		zval_ptr_dtor_nogc(free_op2);
11291 		ZEND_VM_NEXT_OPCODE();
11292 	}
11293 
11294 	SAVE_OPLINE();
11295 	if (IS_CONST == IS_CONST) {
11296 		op1_str = Z_STR_P(op1);
11297 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
11298 		op1_str = zend_string_copy(Z_STR_P(op1));
11299 	} else {
11300 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
11301 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
11302 		}
11303 		op1_str = _zval_get_string_func(op1);
11304 	}
11305 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
11306 		op2_str = Z_STR_P(op2);
11307 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
11308 		op2_str = zend_string_copy(Z_STR_P(op2));
11309 	} else {
11310 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
11311 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
11312 		}
11313 		op2_str = _zval_get_string_func(op2);
11314 	}
11315 	do {
11316 		if (IS_CONST != IS_CONST) {
11317 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
11318 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
11319 					zend_string_addref(op2_str);
11320 				}
11321 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
11322 				zend_string_release(op1_str);
11323 				break;
11324 			}
11325 		}
11326 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
11327 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
11328 				if (IS_CONST == IS_CONST) {
11329 					zend_string_addref(op1_str);
11330 				}
11331 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
11332 				zend_string_release(op2_str);
11333 				break;
11334 			}
11335 		}
11336 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
11337 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
11338 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
11339 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
11340 		if (IS_CONST != IS_CONST) {
11341 			zend_string_release(op1_str);
11342 		}
11343 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
11344 			zend_string_release(op2_str);
11345 		}
11346 	} while (0);
11347 
11348 	zval_ptr_dtor_nogc(free_op2);
11349 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11350 }
11351 
11352 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11353 {
11354 	USE_OPLINE
11355 	zval *function_name;
11356 	zend_free_op free_op2;
11357 	zval *object;
11358 	zend_function *fbc;
11359 	zend_class_entry *called_scope;
11360 	zend_object *obj;
11361 	zend_execute_data *call;
11362 	uint32_t call_info;
11363 
11364 	SAVE_OPLINE();
11365 
11366 	object = EX_CONSTANT(opline->op1);
11367 
11368 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
11369 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
11370 	}
11371 
11372 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11373 
11374 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
11375 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
11376 		do {
11377 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
11378 				function_name = Z_REFVAL_P(function_name);
11379 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
11380 					break;
11381 				}
11382 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
11383 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
11384 				if (UNEXPECTED(EG(exception) != NULL)) {
11385 
11386 					HANDLE_EXCEPTION();
11387 				}
11388 			}
11389 			zend_throw_error(NULL, "Method name must be a string");
11390 			zval_ptr_dtor_nogc(free_op2);
11391 
11392 			HANDLE_EXCEPTION();
11393 		} while (0);
11394 	}
11395 
11396 	if (IS_CONST != IS_UNUSED) {
11397 		do {
11398 			if (IS_CONST == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
11399 				if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
11400 					object = Z_REFVAL_P(object);
11401 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
11402 						break;
11403 					}
11404 				}
11405 				if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
11406 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
11407 					if (UNEXPECTED(EG(exception) != NULL)) {
11408 						zval_ptr_dtor_nogc(free_op2);
11409 						HANDLE_EXCEPTION();
11410 					}
11411 				}
11412 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
11413 				zval_ptr_dtor_nogc(free_op2);
11414 
11415 				HANDLE_EXCEPTION();
11416 			}
11417 		} while (0);
11418 	}
11419 
11420 	obj = Z_OBJ_P(object);
11421 	called_scope = obj->ce;
11422 
11423 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
11424 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
11425 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
11426 	} else {
11427 	    zend_object *orig_obj = obj;
11428 
11429 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
11430 			zend_throw_error(NULL, "Object does not support method calls");
11431 			zval_ptr_dtor_nogc(free_op2);
11432 
11433 			HANDLE_EXCEPTION();
11434 		}
11435 
11436 		/* First, locate the function. */
11437 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
11438 		if (UNEXPECTED(fbc == NULL)) {
11439 			if (EXPECTED(!EG(exception))) {
11440 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
11441 			}
11442 			zval_ptr_dtor_nogc(free_op2);
11443 
11444 			HANDLE_EXCEPTION();
11445 		}
11446 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
11447 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
11448 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
11449 		    EXPECTED(obj == orig_obj)) {
11450 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
11451 		}
11452 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
11453 			init_func_run_time_cache(&fbc->op_array);
11454 		}
11455 	}
11456 
11457 	call_info = ZEND_CALL_NESTED_FUNCTION;
11458 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
11459 		obj = NULL;
11460 	} else if (IS_CONST & (IS_VAR|IS_TMP_VAR|IS_CV)) {
11461 		/* CV may be changed indirectly (e.g. when it's a reference) */
11462 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
11463 		GC_REFCOUNT(obj)++; /* For $this pointer */
11464 	}
11465 
11466 	zval_ptr_dtor_nogc(free_op2);
11467 
11468 	if ((IS_CONST & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
11469 		HANDLE_EXCEPTION();
11470 	}
11471 
11472 	call = zend_vm_stack_push_call_frame(call_info,
11473 		fbc, opline->extended_value, called_scope, obj);
11474 	call->prev_execute_data = EX(call);
11475 	EX(call) = call;
11476 
11477 	ZEND_VM_NEXT_OPCODE();
11478 }
11479 
11480 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11481 {
11482 	USE_OPLINE
11483 	zval *function_name;
11484 	zend_class_entry *ce;
11485 	zend_object *object;
11486 	zend_function *fbc;
11487 	zend_execute_data *call;
11488 
11489 	SAVE_OPLINE();
11490 
11491 	if (IS_CONST == IS_CONST) {
11492 		/* no function found. try a static method in class */
11493 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
11494 		if (UNEXPECTED(ce == NULL)) {
11495 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
11496 			if (UNEXPECTED(ce == NULL)) {
11497 				ZEND_ASSERT(EG(exception));
11498 				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
11499 				HANDLE_EXCEPTION();
11500 			}
11501 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
11502 		}
11503 	} else if (IS_CONST == IS_UNUSED) {
11504 		ce = zend_fetch_class(NULL, opline->op1.num);
11505 		if (UNEXPECTED(ce == NULL)) {
11506 			ZEND_ASSERT(EG(exception));
11507 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
11508 			HANDLE_EXCEPTION();
11509 		}
11510 	} else {
11511 		ce = Z_CE_P(EX_VAR(opline->op1.var));
11512 	}
11513 
11514 	if (IS_CONST == IS_CONST &&
11515 	    (IS_TMP_VAR|IS_VAR) == IS_CONST &&
11516 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
11517 		/* nothing to do */
11518 	} else if (IS_CONST != IS_CONST &&
11519 	           (IS_TMP_VAR|IS_VAR) == IS_CONST &&
11520 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
11521 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
11522 	} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
11523 		zend_free_op free_op2;
11524 
11525 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11526 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
11527 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
11528 				do {
11529 					if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
11530 						function_name = Z_REFVAL_P(function_name);
11531 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
11532 							break;
11533 						}
11534 					} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
11535 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
11536 						if (UNEXPECTED(EG(exception) != NULL)) {
11537 							HANDLE_EXCEPTION();
11538 						}
11539 					}
11540 					zend_throw_error(NULL, "Function name must be a string");
11541 					zval_ptr_dtor_nogc(free_op2);
11542 					HANDLE_EXCEPTION();
11543 				} while (0);
11544  			}
11545 		}
11546 
11547 		if (ce->get_static_method) {
11548 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
11549 		} else {
11550 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
11551 		}
11552 		if (UNEXPECTED(fbc == NULL)) {
11553 			if (EXPECTED(!EG(exception))) {
11554 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
11555 			}
11556 			zval_ptr_dtor_nogc(free_op2);
11557 			HANDLE_EXCEPTION();
11558 		}
11559 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
11560 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
11561 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
11562 			if (IS_CONST == IS_CONST) {
11563 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
11564 			} else {
11565 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
11566 			}
11567 		}
11568 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
11569 			init_func_run_time_cache(&fbc->op_array);
11570 		}
11571 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
11572 			zval_ptr_dtor_nogc(free_op2);
11573 		}
11574 	} else {
11575 		if (UNEXPECTED(ce->constructor == NULL)) {
11576 			zend_throw_error(NULL, "Cannot call constructor");
11577 			HANDLE_EXCEPTION();
11578 		}
11579 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
11580 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
11581 			HANDLE_EXCEPTION();
11582 		}
11583 		fbc = ce->constructor;
11584 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
11585 			init_func_run_time_cache(&fbc->op_array);
11586 		}
11587 	}
11588 
11589 	object = NULL;
11590 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
11591 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
11592 			object = Z_OBJ(EX(This));
11593 			ce = object->ce;
11594 		} else {
11595 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
11596 				/* Allowed for PHP 4 compatibility. */
11597 				zend_error(
11598 					E_DEPRECATED,
11599 					"Non-static method %s::%s() should not be called statically",
11600 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
11601 				if (UNEXPECTED(EG(exception) != NULL)) {
11602 					HANDLE_EXCEPTION();
11603 				}
11604 			} else {
11605 				/* An internal function assumes $this is present and won't check that.
11606 				 * So PHP would crash by allowing the call. */
11607 				zend_throw_error(
11608 					zend_ce_error,
11609 					"Non-static method %s::%s() cannot be called statically",
11610 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
11611 				HANDLE_EXCEPTION();
11612 			}
11613 		}
11614 	}
11615 
11616 	if (IS_CONST == IS_UNUSED) {
11617 		/* previous opcode is ZEND_FETCH_CLASS */
11618 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
11619 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
11620 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
11621 				ce = Z_OBJCE(EX(This));
11622 			} else {
11623 				ce = Z_CE(EX(This));
11624 			}
11625 		}
11626 	}
11627 
11628 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
11629 		fbc, opline->extended_value, ce, object);
11630 	call->prev_execute_data = EX(call);
11631 	EX(call) = call;
11632 
11633 	ZEND_VM_NEXT_OPCODE();
11634 }
11635 
11636 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11637 {
11638 	USE_OPLINE
11639 	zend_free_op free_op2;
11640 	zval *function_name;
11641 	zend_fcall_info_cache fcc;
11642 	char *error = NULL;
11643 	zend_function *func;
11644 	zend_class_entry *called_scope;
11645 	zend_object *object;
11646 	zend_execute_data *call;
11647 	uint32_t call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_DYNAMIC;
11648 
11649 	SAVE_OPLINE();
11650 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11651 	if (zend_is_callable_ex(function_name, NULL, 0, NULL, &fcc, &error)) {
11652 		func = fcc.function_handler;
11653 		called_scope = fcc.called_scope;
11654 		object = fcc.object;
11655 		if (error) {
11656 			efree(error);
11657 			/* This is the only soft error is_callable() can generate */
11658 			zend_error(E_DEPRECATED,
11659 				"Non-static method %s::%s() should not be called statically",
11660 				ZSTR_VAL(func->common.scope->name), ZSTR_VAL(func->common.function_name));
11661 			if (UNEXPECTED(EG(exception) != NULL)) {
11662 				zval_ptr_dtor_nogc(free_op2);
11663 				HANDLE_EXCEPTION();
11664 			}
11665 		}
11666 		if (func->common.fn_flags & ZEND_ACC_CLOSURE) {
11667 			/* Delay closure destruction until its invocation */
11668 			ZEND_ASSERT(GC_TYPE((zend_object*)func->common.prototype) == IS_OBJECT);
11669 			GC_REFCOUNT((zend_object*)func->common.prototype)++;
11670 			call_info |= ZEND_CALL_CLOSURE;
11671 			if (func->common.fn_flags & ZEND_ACC_FAKE_CLOSURE) {
11672 				call_info |= ZEND_CALL_FAKE_CLOSURE;
11673 			}
11674 		} else if (object) {
11675 			call_info |= ZEND_CALL_RELEASE_THIS;
11676 			GC_REFCOUNT(object)++; /* For $this pointer */
11677 		}
11678 
11679 		zval_ptr_dtor_nogc(free_op2);
11680 		if (((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) && UNEXPECTED(EG(exception))) {
11681 			if (call_info & ZEND_CALL_CLOSURE) {
11682 				zend_object_release((zend_object*)func->common.prototype);
11683 			}
11684 			if (call_info & ZEND_CALL_RELEASE_THIS) {
11685 				zend_object_release(object);
11686 			}
11687 			HANDLE_EXCEPTION();
11688 		}
11689 
11690 		if (EXPECTED(func->type == ZEND_USER_FUNCTION) && UNEXPECTED(!func->op_array.run_time_cache)) {
11691 			init_func_run_time_cache(&func->op_array);
11692 		}
11693 	} else {
11694 		zend_internal_type_error(EX_USES_STRICT_TYPES(), "%s() expects parameter 1 to be a valid callback, %s", Z_STRVAL_P(EX_CONSTANT(opline->op1)), error);
11695 		efree(error);
11696 		zval_ptr_dtor_nogc(free_op2);
11697 		if (UNEXPECTED(EG(exception))) {
11698 			HANDLE_EXCEPTION();
11699 		}
11700 		func = (zend_function*)&zend_pass_function;
11701 		called_scope = NULL;
11702 		object = NULL;
11703 	}
11704 
11705 	call = zend_vm_stack_push_call_frame(call_info,
11706 		func, opline->extended_value, called_scope, object);
11707 	call->prev_execute_data = EX(call);
11708 	EX(call) = call;
11709 
11710 	ZEND_VM_NEXT_OPCODE();
11711 }
11712 
11713 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11714 {
11715 	USE_OPLINE
11716 	zend_free_op free_op2;
11717 	zval *op1, *op2, *result;
11718 
11719 	op1 = EX_CONSTANT(opline->op1);
11720 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11721 	do {
11722 		int result;
11723 
11724 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
11725 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
11726 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
11727 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
11728 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
11729 			} else {
11730 				break;
11731 			}
11732 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
11733 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
11734 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
11735 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
11736 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
11737 			} else {
11738 				break;
11739 			}
11740 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
11741 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
11742 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
11743 					result = 1;
11744 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
11745 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
11746 						result = 0;
11747 					} else {
11748 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
11749 					}
11750 				} else {
11751 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
11752 				}
11753 				zval_ptr_dtor_nogc(free_op2);
11754 			} else {
11755 				break;
11756 			}
11757 		} else {
11758 			break;
11759 		}
11760 		ZEND_VM_SMART_BRANCH(result, 0);
11761 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
11762 		ZEND_VM_NEXT_OPCODE();
11763 	} while (0);
11764 
11765 	SAVE_OPLINE();
11766 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
11767 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
11768 	}
11769 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
11770 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
11771 	}
11772 	result = EX_VAR(opline->result.var);
11773 	compare_function(result, op1, op2);
11774 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
11775 	zval_ptr_dtor_nogc(free_op2);
11776 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11777 }
11778 
11779 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11780 {
11781 	USE_OPLINE
11782 
11783 	zval *expr_ptr, new_expr;
11784 
11785 	SAVE_OPLINE();
11786 	if ((IS_CONST == IS_VAR || IS_CONST == IS_CV) &&
11787 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
11788 		expr_ptr = NULL;
11789 		ZVAL_MAKE_REF(expr_ptr);
11790 		Z_ADDREF_P(expr_ptr);
11791 
11792 	} else {
11793 		expr_ptr = EX_CONSTANT(opline->op1);
11794 		if (IS_CONST == IS_TMP_VAR) {
11795 			/* pass */
11796 		} else if (IS_CONST == IS_CONST) {
11797 			if (Z_REFCOUNTED_P(expr_ptr)) {
11798 				Z_ADDREF_P(expr_ptr);
11799 			}
11800 		} else if (IS_CONST == IS_CV) {
11801 			ZVAL_DEREF(expr_ptr);
11802 			if (Z_REFCOUNTED_P(expr_ptr)) {
11803 				Z_ADDREF_P(expr_ptr);
11804 			}
11805 		} else /* if (IS_CONST == IS_VAR) */ {
11806 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
11807 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
11808 
11809 				expr_ptr = Z_REFVAL_P(expr_ptr);
11810 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
11811 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
11812 					expr_ptr = &new_expr;
11813 					efree_size(ref, sizeof(zend_reference));
11814 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
11815 					Z_ADDREF_P(expr_ptr);
11816 				}
11817 			}
11818 		}
11819 	}
11820 
11821 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
11822 		zend_free_op free_op2;
11823 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11824 		zend_string *str;
11825 		zend_ulong hval;
11826 
11827 add_again:
11828 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
11829 			str = Z_STR_P(offset);
11830 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
11831 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
11832 					goto num_index;
11833 				}
11834 			}
11835 str_index:
11836 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
11837 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
11838 			hval = Z_LVAL_P(offset);
11839 num_index:
11840 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
11841 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
11842 			offset = Z_REFVAL_P(offset);
11843 			goto add_again;
11844 		} else if (Z_TYPE_P(offset) == IS_NULL) {
11845 			str = ZSTR_EMPTY_ALLOC();
11846 			goto str_index;
11847 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
11848 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
11849 			goto num_index;
11850 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
11851 			hval = 0;
11852 			goto num_index;
11853 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
11854 			hval = 1;
11855 			goto num_index;
11856 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
11857 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
11858 			str = ZSTR_EMPTY_ALLOC();
11859 			goto str_index;
11860 		} else {
11861 			zend_error(E_WARNING, "Illegal offset type");
11862 			zval_ptr_dtor(expr_ptr);
11863 		}
11864 		zval_ptr_dtor_nogc(free_op2);
11865 	} else {
11866 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
11867 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
11868 			zval_ptr_dtor(expr_ptr);
11869 		}
11870 	}
11871 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
11872 }
11873 
11874 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11875 {
11876 	zval *array;
11877 	uint32_t size;
11878 	USE_OPLINE
11879 
11880 	array = EX_VAR(opline->result.var);
11881 	if (IS_CONST != IS_UNUSED) {
11882 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
11883 	} else {
11884 		size = 0;
11885 	}
11886 	ZVAL_NEW_ARR(array);
11887 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
11888 
11889 	if (IS_CONST != IS_UNUSED) {
11890 		/* Explicitly initialize array as not-packed if flag is set */
11891 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
11892 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
11893 		}
11894 	}
11895 
11896 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
11897 }
11898 
11899 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
11900 {
11901 	USE_OPLINE
11902 	zend_free_op free_op2;
11903 	zval *container;
11904 	int result;
11905 	zend_ulong hval;
11906 	zval *offset;
11907 
11908 	SAVE_OPLINE();
11909 	container = EX_CONSTANT(opline->op1);
11910 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
11911 
11912 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
11913 		HashTable *ht;
11914 		zval *value;
11915 		zend_string *str;
11916 
11917 isset_dim_obj_array:
11918 		ht = Z_ARRVAL_P(container);
11919 isset_again:
11920 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
11921 			str = Z_STR_P(offset);
11922 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
11923 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
11924 					goto num_index_prop;
11925 				}
11926 			}
11927 str_index_prop:
11928 			value = zend_hash_find_ind(ht, str);
11929 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
11930 			hval = Z_LVAL_P(offset);
11931 num_index_prop:
11932 			value = zend_hash_index_find(ht, hval);
11933 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
11934 			offset = Z_REFVAL_P(offset);
11935 			goto isset_again;
11936 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
11937 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
11938 			goto num_index_prop;
11939 		} else if (Z_TYPE_P(offset) == IS_NULL) {
11940 			str = ZSTR_EMPTY_ALLOC();
11941 			goto str_index_prop;
11942 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
11943 			hval = 0;
11944 			goto num_index_prop;
11945 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
11946 			hval = 1;
11947 			goto num_index_prop;
11948 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
11949 			hval = Z_RES_HANDLE_P(offset);
11950 			goto num_index_prop;
11951 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
11952 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
11953 			str = ZSTR_EMPTY_ALLOC();
11954 			goto str_index_prop;
11955 		} else {
11956 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
11957 			goto isset_not_found;
11958 		}
11959 
11960 		if (opline->extended_value & ZEND_ISSET) {
11961 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
11962 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
11963 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
11964 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
11965 			result = (value == NULL || !i_zend_is_true(value));
11966 		}
11967 		goto isset_dim_obj_exit;
11968 	} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
11969 		container = Z_REFVAL_P(container);
11970 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
11971 			goto isset_dim_obj_array;
11972 		}
11973 	}
11974 
11975 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
11976 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
11977 	}
11978 
11979 	if ((IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
11980 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
11981 			result =
11982 				((opline->extended_value & ZEND_ISSET) == 0) ^
11983 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
11984 		} else {
11985 			zend_error(E_NOTICE, "Trying to check element of non-array");
11986 			goto isset_not_found;
11987 		}
11988 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
11989 		zend_long lval;
11990 
11991 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
11992 			lval = Z_LVAL_P(offset);
11993 isset_str_offset:
11994 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
11995 				lval += (zend_long)Z_STRLEN_P(container);
11996 			}
11997 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
11998 				if (opline->extended_value & ZEND_ISSET) {
11999 					result = 1;
12000 				} else {
12001 					result = (Z_STRVAL_P(container)[lval] == '0');
12002 				}
12003 			} else {
12004 				goto isset_not_found;
12005 			}
12006 		} else {
12007 			if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR)) {
12008 				ZVAL_DEREF(offset);
12009 			}
12010 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
12011 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
12012 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
12013 				lval = zval_get_long(offset);
12014 				goto isset_str_offset;
12015 			}
12016 			goto isset_not_found;
12017 		}
12018 	} else {
12019 isset_not_found:
12020 		result = ((opline->extended_value & ZEND_ISSET) == 0);
12021 	}
12022 
12023 isset_dim_obj_exit:
12024 	zval_ptr_dtor_nogc(free_op2);
12025 
12026 	ZEND_VM_SMART_BRANCH(result, 1);
12027 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12028 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12029 }
12030 
12031 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12032 {
12033 	USE_OPLINE
12034 	zend_free_op free_op2;
12035 	zval *container;
12036 	int result;
12037 	zval *offset;
12038 
12039 	SAVE_OPLINE();
12040 	container = EX_CONSTANT(opline->op1);
12041 
12042 	if (IS_CONST == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
12043 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
12044 	}
12045 
12046 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
12047 
12048 	if (IS_CONST == IS_CONST ||
12049 	    (IS_CONST != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
12050 		if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
12051 			container = Z_REFVAL_P(container);
12052 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
12053 				goto isset_no_object;
12054 			}
12055 		} else {
12056 			goto isset_no_object;
12057 		}
12058 	}
12059 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
12060 		zend_string *property_name = zval_get_string(offset);
12061 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
12062 		zend_string_release(property_name);
12063 isset_no_object:
12064 		result = ((opline->extended_value & ZEND_ISSET) == 0);
12065 	} else {
12066 		result =
12067 			((opline->extended_value & ZEND_ISSET) == 0) ^
12068 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
12069 	}
12070 
12071 	zval_ptr_dtor_nogc(free_op2);
12072 
12073 	ZEND_VM_SMART_BRANCH(result, 1);
12074 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12075 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12076 }
12077 
12078 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12079 {
12080 	USE_OPLINE
12081 	zend_free_op free_op2;
12082 	zval *container, *dim, *value;
12083 	zend_long offset;
12084 
12085 	container = EX_CONSTANT(opline->op1);
12086 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
12087 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
12088 fetch_dim_r_index_array:
12089 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
12090 			offset = Z_LVAL_P(dim);
12091 		} else {
12092 			offset = zval_get_long(dim);
12093 		}
12094 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
12095 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
12096 		if (IS_CONST & (IS_TMP_VAR|IS_VAR)) {
12097 			SAVE_OPLINE();
12098 
12099 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12100 		} else {
12101 			ZEND_VM_NEXT_OPCODE();
12102 		}
12103 	} else if (IS_CONST != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
12104 		container = Z_REFVAL_P(container);
12105 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
12106 			goto fetch_dim_r_index_array;
12107 		} else {
12108 			goto fetch_dim_r_index_slow;
12109 		}
12110 	} else {
12111 fetch_dim_r_index_slow:
12112 		SAVE_OPLINE();
12113 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
12114 
12115 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12116 	}
12117 
12118 fetch_dim_r_index_undef:
12119 	ZVAL_NULL(EX_VAR(opline->result.var));
12120 	SAVE_OPLINE();
12121 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
12122 
12123 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12124 }
12125 
12126 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12127 {
12128 	USE_OPLINE
12129 	zval *op1, *op2, *result;
12130 
12131 	op1 = EX_CONSTANT(opline->op1);
12132 	op2 = EX_VAR(opline->op2.var);
12133 	result = EX_VAR(opline->result.var);
12134 	ZVAL_LONG(result, Z_LVAL_P(op1) + Z_LVAL_P(op2));
12135 	ZEND_VM_NEXT_OPCODE();
12136 }
12137 
12138 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12139 {
12140 	USE_OPLINE
12141 	zval *op1, *op2, *result;
12142 
12143 	op1 = EX_CONSTANT(opline->op1);
12144 	op2 = EX_VAR(opline->op2.var);
12145 	result = EX_VAR(opline->result.var);
12146 	fast_long_add_function(result, op1, op2);
12147 	ZEND_VM_NEXT_OPCODE();
12148 }
12149 
12150 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12151 {
12152 	USE_OPLINE
12153 	zval *op1, *op2, *result;
12154 
12155 	op1 = EX_CONSTANT(opline->op1);
12156 	op2 = EX_VAR(opline->op2.var);
12157 	result = EX_VAR(opline->result.var);
12158 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
12159 	ZEND_VM_NEXT_OPCODE();
12160 }
12161 
12162 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12163 {
12164 	USE_OPLINE
12165 	zval *op1, *op2, *result;
12166 
12167 	op1 = EX_CONSTANT(opline->op1);
12168 	op2 = EX_VAR(opline->op2.var);
12169 	result = EX_VAR(opline->result.var);
12170 	ZVAL_LONG(result, Z_LVAL_P(op1) - Z_LVAL_P(op2));
12171 	ZEND_VM_NEXT_OPCODE();
12172 }
12173 
12174 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12175 {
12176 	USE_OPLINE
12177 	zval *op1, *op2, *result;
12178 
12179 	op1 = EX_CONSTANT(opline->op1);
12180 	op2 = EX_VAR(opline->op2.var);
12181 	result = EX_VAR(opline->result.var);
12182 	fast_long_sub_function(result, op1, op2);
12183 	ZEND_VM_NEXT_OPCODE();
12184 }
12185 
12186 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12187 {
12188 	USE_OPLINE
12189 	zval *op1, *op2, *result;
12190 
12191 	op1 = EX_CONSTANT(opline->op1);
12192 	op2 = EX_VAR(opline->op2.var);
12193 	result = EX_VAR(opline->result.var);
12194 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
12195 	ZEND_VM_NEXT_OPCODE();
12196 }
12197 
12198 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12199 {
12200 	USE_OPLINE
12201 	zval *op1, *op2, *result;
12202 
12203 	op1 = EX_CONSTANT(opline->op1);
12204 	op2 = EX_VAR(opline->op2.var);
12205 	result = EX_VAR(opline->result.var);
12206 	ZVAL_LONG(result, Z_LVAL_P(op1) * Z_LVAL_P(op2));
12207 	ZEND_VM_NEXT_OPCODE();
12208 }
12209 
12210 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12211 {
12212 	USE_OPLINE
12213 	zval *op1, *op2, *result;
12214 	zend_long overflow;
12215 
12216 	op1 = EX_CONSTANT(opline->op1);
12217 	op2 = EX_VAR(opline->op2.var);
12218 	result = EX_VAR(opline->result.var);
12219 	ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
12220 	Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
12221 	ZEND_VM_NEXT_OPCODE();
12222 }
12223 
12224 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12225 {
12226 	USE_OPLINE
12227 	zval *op1, *op2, *result;
12228 
12229 	op1 = EX_CONSTANT(opline->op1);
12230 	op2 = EX_VAR(opline->op2.var);
12231 	result = EX_VAR(opline->result.var);
12232 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
12233 	ZEND_VM_NEXT_OPCODE();
12234 }
12235 
12236 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12237 {
12238 	USE_OPLINE
12239 	zval *op1, *op2;
12240 	int result;
12241 
12242 	op1 = EX_CONSTANT(opline->op1);
12243 	op2 = EX_VAR(opline->op2.var);
12244 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
12245 
12246 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12247 	ZEND_VM_NEXT_OPCODE();
12248 }
12249 
12250 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12251 {
12252 	USE_OPLINE
12253 	zval *op1, *op2;
12254 	int result;
12255 
12256 	op1 = EX_CONSTANT(opline->op1);
12257 	op2 = EX_VAR(opline->op2.var);
12258 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
12259 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12260 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12261 	ZEND_VM_NEXT_OPCODE();
12262 }
12263 
12264 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12265 {
12266 	USE_OPLINE
12267 	zval *op1, *op2;
12268 	int result;
12269 
12270 	op1 = EX_CONSTANT(opline->op1);
12271 	op2 = EX_VAR(opline->op2.var);
12272 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
12273 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12274 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12275 	ZEND_VM_NEXT_OPCODE();
12276 }
12277 
12278 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12279 {
12280 	USE_OPLINE
12281 	zval *op1, *op2;
12282 	int result;
12283 
12284 	op1 = EX_CONSTANT(opline->op1);
12285 	op2 = EX_VAR(opline->op2.var);
12286 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
12287 
12288 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12289 	ZEND_VM_NEXT_OPCODE();
12290 }
12291 
12292 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12293 {
12294 	USE_OPLINE
12295 	zval *op1, *op2;
12296 	int result;
12297 
12298 	op1 = EX_CONSTANT(opline->op1);
12299 	op2 = EX_VAR(opline->op2.var);
12300 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
12301 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12302 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12303 	ZEND_VM_NEXT_OPCODE();
12304 }
12305 
12306 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12307 {
12308 	USE_OPLINE
12309 	zval *op1, *op2;
12310 	int result;
12311 
12312 	op1 = EX_CONSTANT(opline->op1);
12313 	op2 = EX_VAR(opline->op2.var);
12314 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
12315 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12316 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12317 	ZEND_VM_NEXT_OPCODE();
12318 }
12319 
12320 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12321 {
12322 	USE_OPLINE
12323 	zval *op1, *op2;
12324 	int result;
12325 
12326 	op1 = EX_CONSTANT(opline->op1);
12327 	op2 = EX_VAR(opline->op2.var);
12328 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
12329 
12330 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12331 	ZEND_VM_NEXT_OPCODE();
12332 }
12333 
12334 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12335 {
12336 	USE_OPLINE
12337 	zval *op1, *op2;
12338 	int result;
12339 
12340 	op1 = EX_CONSTANT(opline->op1);
12341 	op2 = EX_VAR(opline->op2.var);
12342 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
12343 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12344 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12345 	ZEND_VM_NEXT_OPCODE();
12346 }
12347 
12348 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12349 {
12350 	USE_OPLINE
12351 	zval *op1, *op2;
12352 	int result;
12353 
12354 	op1 = EX_CONSTANT(opline->op1);
12355 	op2 = EX_VAR(opline->op2.var);
12356 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
12357 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12358 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12359 	ZEND_VM_NEXT_OPCODE();
12360 }
12361 
12362 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12363 {
12364 	USE_OPLINE
12365 	zval *op1, *op2;
12366 	int result;
12367 
12368 	op1 = EX_CONSTANT(opline->op1);
12369 	op2 = EX_VAR(opline->op2.var);
12370 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
12371 
12372 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12373 	ZEND_VM_NEXT_OPCODE();
12374 }
12375 
12376 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12377 {
12378 	USE_OPLINE
12379 	zval *op1, *op2;
12380 	int result;
12381 
12382 	op1 = EX_CONSTANT(opline->op1);
12383 	op2 = EX_VAR(opline->op2.var);
12384 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
12385 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12386 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12387 	ZEND_VM_NEXT_OPCODE();
12388 }
12389 
12390 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12391 {
12392 	USE_OPLINE
12393 	zval *op1, *op2;
12394 	int result;
12395 
12396 	op1 = EX_CONSTANT(opline->op1);
12397 	op2 = EX_VAR(opline->op2.var);
12398 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
12399 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12400 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12401 	ZEND_VM_NEXT_OPCODE();
12402 }
12403 
12404 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12405 {
12406 	USE_OPLINE
12407 	zval *op1, *op2;
12408 	int result;
12409 
12410 	op1 = EX_CONSTANT(opline->op1);
12411 	op2 = EX_VAR(opline->op2.var);
12412 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
12413 
12414 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12415 	ZEND_VM_NEXT_OPCODE();
12416 }
12417 
12418 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12419 {
12420 	USE_OPLINE
12421 	zval *op1, *op2;
12422 	int result;
12423 
12424 	op1 = EX_CONSTANT(opline->op1);
12425 	op2 = EX_VAR(opline->op2.var);
12426 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
12427 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12428 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12429 	ZEND_VM_NEXT_OPCODE();
12430 }
12431 
12432 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12433 {
12434 	USE_OPLINE
12435 	zval *op1, *op2;
12436 	int result;
12437 
12438 	op1 = EX_CONSTANT(opline->op1);
12439 	op2 = EX_VAR(opline->op2.var);
12440 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
12441 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12442 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12443 	ZEND_VM_NEXT_OPCODE();
12444 }
12445 
12446 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12447 {
12448 	USE_OPLINE
12449 	zval *op1, *op2;
12450 	int result;
12451 
12452 	op1 = EX_CONSTANT(opline->op1);
12453 	op2 = EX_VAR(opline->op2.var);
12454 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
12455 
12456 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12457 	ZEND_VM_NEXT_OPCODE();
12458 }
12459 
12460 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12461 {
12462 	USE_OPLINE
12463 	zval *op1, *op2;
12464 	int result;
12465 
12466 	op1 = EX_CONSTANT(opline->op1);
12467 	op2 = EX_VAR(opline->op2.var);
12468 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
12469 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12470 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12471 	ZEND_VM_NEXT_OPCODE();
12472 }
12473 
12474 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12475 {
12476 	USE_OPLINE
12477 	zval *op1, *op2;
12478 	int result;
12479 
12480 	op1 = EX_CONSTANT(opline->op1);
12481 	op2 = EX_VAR(opline->op2.var);
12482 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
12483 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12484 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12485 	ZEND_VM_NEXT_OPCODE();
12486 }
12487 
12488 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12489 {
12490 	USE_OPLINE
12491 	zval *op1, *op2;
12492 	int result;
12493 
12494 	op1 = EX_CONSTANT(opline->op1);
12495 	op2 = EX_VAR(opline->op2.var);
12496 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
12497 
12498 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12499 	ZEND_VM_NEXT_OPCODE();
12500 }
12501 
12502 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12503 {
12504 	USE_OPLINE
12505 	zval *op1, *op2;
12506 	int result;
12507 
12508 	op1 = EX_CONSTANT(opline->op1);
12509 	op2 = EX_VAR(opline->op2.var);
12510 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
12511 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12512 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12513 	ZEND_VM_NEXT_OPCODE();
12514 }
12515 
12516 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12517 {
12518 	USE_OPLINE
12519 	zval *op1, *op2;
12520 	int result;
12521 
12522 	op1 = EX_CONSTANT(opline->op1);
12523 	op2 = EX_VAR(opline->op2.var);
12524 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
12525 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12526 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12527 	ZEND_VM_NEXT_OPCODE();
12528 }
12529 
12530 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12531 {
12532 	USE_OPLINE
12533 	zval *op1, *op2;
12534 	int result;
12535 
12536 	op1 = EX_CONSTANT(opline->op1);
12537 	op2 = EX_VAR(opline->op2.var);
12538 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
12539 
12540 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12541 	ZEND_VM_NEXT_OPCODE();
12542 }
12543 
12544 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12545 {
12546 	USE_OPLINE
12547 	zval *op1, *op2;
12548 	int result;
12549 
12550 	op1 = EX_CONSTANT(opline->op1);
12551 	op2 = EX_VAR(opline->op2.var);
12552 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
12553 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
12554 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12555 	ZEND_VM_NEXT_OPCODE();
12556 }
12557 
12558 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12559 {
12560 	USE_OPLINE
12561 	zval *op1, *op2;
12562 	int result;
12563 
12564 	op1 = EX_CONSTANT(opline->op1);
12565 	op2 = EX_VAR(opline->op2.var);
12566 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
12567 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
12568 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
12569 	ZEND_VM_NEXT_OPCODE();
12570 }
12571 
12572 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12573 {
12574 	USE_OPLINE
12575 	zval *retval_ptr;
12576 	zval *return_value;
12577 	zend_free_op free_op1;
12578 
12579 	retval_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12580 	return_value = EX(return_value);
12581 	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
12582 		SAVE_OPLINE();
12583 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
12584 		if (return_value) {
12585 			ZVAL_NULL(return_value);
12586 		}
12587 	} else if (!return_value) {
12588 		if (IS_TMP_VAR & (IS_VAR|IS_TMP_VAR)) {
12589 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
12590 				SAVE_OPLINE();
12591 				zval_dtor_func(Z_COUNTED_P(free_op1));
12592 			}
12593 		}
12594 	} else {
12595 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
12596 			ZVAL_COPY_VALUE(return_value, retval_ptr);
12597 			if (IS_TMP_VAR == IS_CONST) {
12598 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
12599 					Z_ADDREF_P(return_value);
12600 				}
12601 			}
12602 		} else if (IS_TMP_VAR == IS_CV) {
12603 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
12604 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
12605 					ZVAL_COPY_VALUE(return_value, retval_ptr);
12606 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
12607 						ZVAL_NULL(retval_ptr);
12608 					} else {
12609 						Z_ADDREF_P(return_value);
12610 					}
12611 				} else {
12612 					retval_ptr = Z_REFVAL_P(retval_ptr);
12613 					ZVAL_COPY(return_value, retval_ptr);
12614 				}
12615 			} else {
12616 				ZVAL_COPY_VALUE(return_value, retval_ptr);
12617 			}
12618 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
12619 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
12620 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
12621 
12622 				retval_ptr = Z_REFVAL_P(retval_ptr);
12623 				ZVAL_COPY_VALUE(return_value, retval_ptr);
12624 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
12625 					efree_size(ref, sizeof(zend_reference));
12626 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
12627 					Z_ADDREF_P(retval_ptr);
12628 				}
12629 			} else {
12630 				ZVAL_COPY_VALUE(return_value, retval_ptr);
12631 			}
12632 		}
12633 	}
12634 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
12635 }
12636 
12637 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12638 {
12639 	USE_OPLINE
12640 	zval *retval_ptr;
12641 	zend_free_op free_op1;
12642 
12643 	SAVE_OPLINE();
12644 
12645 	do {
12646 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) ||
12647 		    (IS_TMP_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
12648 			/* Not supposed to happen, but we'll allow it */
12649 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
12650 
12651 			retval_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12652 			if (!EX(return_value)) {
12653 				zval_ptr_dtor_nogc(free_op1);
12654 			} else {
12655 				if (IS_TMP_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
12656 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
12657 					break;
12658 				}
12659 
12660 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
12661 				if (IS_TMP_VAR == IS_CONST) {
12662 					if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
12663 				}
12664 			}
12665 			break;
12666 		}
12667 
12668 		retval_ptr = NULL;
12669 
12670 		if (IS_TMP_VAR == IS_VAR) {
12671 			if (retval_ptr == &EG(uninitialized_zval) ||
12672 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
12673 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
12674 				if (EX(return_value)) {
12675 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
12676 				} else {
12677 
12678 				}
12679 				break;
12680 			}
12681 		}
12682 
12683 		if (EX(return_value)) {
12684 			ZVAL_MAKE_REF(retval_ptr);
12685 			Z_ADDREF_P(retval_ptr);
12686 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
12687 		}
12688 
12689 	} while (0);
12690 
12691 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
12692 }
12693 
12694 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12695 {
12696 	USE_OPLINE
12697 	zval *retval;
12698 	zend_free_op free_op1;
12699 
12700 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
12701 
12702 	SAVE_OPLINE();
12703 	retval = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12704 
12705 	/* Copy return value into generator->retval */
12706 	if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
12707 		ZVAL_COPY_VALUE(&generator->retval, retval);
12708 		if (IS_TMP_VAR == IS_CONST) {
12709 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
12710 				Z_ADDREF(generator->retval);
12711 			}
12712 		}
12713 	} else if (IS_TMP_VAR == IS_CV) {
12714 		ZVAL_DEREF(retval);
12715 		ZVAL_COPY(&generator->retval, retval);
12716 	} else /* if (IS_TMP_VAR == IS_VAR) */ {
12717 		if (UNEXPECTED(Z_ISREF_P(retval))) {
12718 			zend_refcounted *ref = Z_COUNTED_P(retval);
12719 
12720 			retval = Z_REFVAL_P(retval);
12721 			ZVAL_COPY_VALUE(&generator->retval, retval);
12722 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
12723 				efree_size(ref, sizeof(zend_reference));
12724 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
12725 				Z_ADDREF_P(retval);
12726 			}
12727 		} else {
12728 			ZVAL_COPY_VALUE(&generator->retval, retval);
12729 		}
12730 	}
12731 
12732 	/* Close the generator to free up resources */
12733 	zend_generator_close(generator, 1);
12734 
12735 	/* Pass execution back to handling code */
12736 	ZEND_VM_RETURN();
12737 }
12738 
12739 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12740 {
12741 	USE_OPLINE
12742 	zval *value;
12743 	zend_free_op free_op1;
12744 
12745 	SAVE_OPLINE();
12746 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12747 
12748 	do {
12749 		if (IS_TMP_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
12750 			if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
12751 				value = Z_REFVAL_P(value);
12752 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
12753 					break;
12754 				}
12755 			}
12756 			if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
12757 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
12758 				if (UNEXPECTED(EG(exception) != NULL)) {
12759 					HANDLE_EXCEPTION();
12760 				}
12761 			}
12762 			zend_throw_error(NULL, "Can only throw objects");
12763 			zval_ptr_dtor_nogc(free_op1);
12764 			HANDLE_EXCEPTION();
12765 		}
12766 	} while (0);
12767 
12768 	zend_exception_save();
12769 	if (IS_TMP_VAR != IS_TMP_VAR) {
12770 		if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
12771 	}
12772 
12773 	zend_throw_exception_object(value);
12774 	zend_exception_restore();
12775 
12776 	HANDLE_EXCEPTION();
12777 }
12778 
12779 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12780 {
12781 	USE_OPLINE
12782 	zval *value, *arg;
12783 	zend_free_op free_op1;
12784 	uint32_t arg_num = opline->op2.num;
12785 
12786 	if (EXPECTED(0)) {
12787 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
12788 			goto send_val_by_ref;
12789 		}
12790 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
12791 send_val_by_ref:
12792 		SAVE_OPLINE();
12793 		zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
12794 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
12795 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
12796 		ZVAL_UNDEF(arg);
12797 		HANDLE_EXCEPTION();
12798 	}
12799 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12800 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
12801 	ZVAL_COPY_VALUE(arg, value);
12802 	if (IS_TMP_VAR == IS_CONST) {
12803 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
12804 			Z_ADDREF_P(arg);
12805 		}
12806 	}
12807 	ZEND_VM_NEXT_OPCODE();
12808 }
12809 
12810 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12811 {
12812 	USE_OPLINE
12813 	zval *value, *arg;
12814 	zend_free_op free_op1;
12815 	uint32_t arg_num = opline->op2.num;
12816 
12817 	if (EXPECTED(1)) {
12818 		if (QUICK_ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
12819 			goto send_val_by_ref;
12820 		}
12821 	} else if (ARG_MUST_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
12822 send_val_by_ref:
12823 		SAVE_OPLINE();
12824 		zend_throw_error(NULL, "Cannot pass parameter %d by reference", arg_num);
12825 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
12826 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
12827 		ZVAL_UNDEF(arg);
12828 		HANDLE_EXCEPTION();
12829 	}
12830 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12831 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
12832 	ZVAL_COPY_VALUE(arg, value);
12833 	if (IS_TMP_VAR == IS_CONST) {
12834 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
12835 			Z_ADDREF_P(arg);
12836 		}
12837 	}
12838 	ZEND_VM_NEXT_OPCODE();
12839 }
12840 
12841 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12842 {
12843 	USE_OPLINE
12844 	zval *arg, *param;
12845 	zend_free_op free_op1;
12846 
12847 	SAVE_OPLINE();
12848 	arg = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12849 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
12850 
12851 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
12852 		zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
12853 			opline->op2.num,
12854 			EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
12855 			EX(call)->func->common.scope ? "::" : "",
12856 			ZSTR_VAL(EX(call)->func->common.function_name));
12857 	}
12858 
12859 	ZVAL_COPY(param, arg);
12860 
12861 	zval_ptr_dtor_nogc(free_op1);
12862 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12863 }
12864 
12865 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12866 {
12867 	USE_OPLINE
12868 	zend_free_op free_op1;
12869 	zval *expr;
12870 	zval *result = EX_VAR(opline->result.var);
12871 
12872 	SAVE_OPLINE();
12873 	expr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12874 
12875 	switch (opline->extended_value) {
12876 		case IS_NULL:
12877 			ZVAL_NULL(result);
12878 			break;
12879 		case _IS_BOOL:
12880 			ZVAL_BOOL(result, zend_is_true(expr));
12881 			break;
12882 		case IS_LONG:
12883 			ZVAL_LONG(result, zval_get_long(expr));
12884 			break;
12885 		case IS_DOUBLE:
12886 			ZVAL_DOUBLE(result, zval_get_double(expr));
12887 			break;
12888 		case IS_STRING:
12889 			ZVAL_STR(result, zval_get_string(expr));
12890 			break;
12891 		default:
12892 			if (IS_TMP_VAR & (IS_VAR|IS_CV)) {
12893 				ZVAL_DEREF(expr);
12894 			}
12895 			/* If value is already of correct type, return it directly */
12896 			if (Z_TYPE_P(expr) == opline->extended_value) {
12897 				ZVAL_COPY_VALUE(result, expr);
12898 				if (IS_TMP_VAR == IS_CONST) {
12899 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
12900 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
12901 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
12902 				}
12903 
12904 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12905 			}
12906 
12907 			if (opline->extended_value == IS_ARRAY) {
12908 				if (Z_TYPE_P(expr) != IS_OBJECT) {
12909 					ZVAL_NEW_ARR(result);
12910 					zend_hash_init(Z_ARRVAL_P(result), 8, NULL, ZVAL_PTR_DTOR, 0);
12911 					if (Z_TYPE_P(expr) != IS_NULL) {
12912 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
12913 						if (IS_TMP_VAR == IS_CONST) {
12914 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
12915 						} else {
12916 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
12917 						}
12918 					}
12919 				} else {
12920 					ZVAL_COPY_VALUE(result, expr);
12921 					Z_ADDREF_P(result);
12922 					convert_to_array(result);
12923 				}
12924 			} else {
12925 				if (Z_TYPE_P(expr) != IS_ARRAY) {
12926 					object_init(result);
12927 					if (Z_TYPE_P(expr) != IS_NULL) {
12928 						expr = zend_hash_add_new(Z_OBJPROP_P(result), ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
12929 						if (IS_TMP_VAR == IS_CONST) {
12930 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
12931 						} else {
12932 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
12933 						}
12934 					}
12935 				} else {
12936 					ZVAL_COPY(result, expr);
12937 					convert_to_object(result);
12938 				}
12939 			}
12940 	}
12941 
12942 	zval_ptr_dtor_nogc(free_op1);
12943 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12944 }
12945 
12946 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
12947 {
12948 	USE_OPLINE
12949 	zend_free_op free_op1;
12950 	zval *array_ptr, *result;
12951 
12952 	SAVE_OPLINE();
12953 
12954 	array_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
12955 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
12956 		result = EX_VAR(opline->result.var);
12957 		ZVAL_COPY_VALUE(result, array_ptr);
12958 		if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
12959 			Z_ADDREF_P(array_ptr);
12960 		}
12961 		Z_FE_POS_P(result) = 0;
12962 
12963 		ZEND_VM_NEXT_OPCODE();
12964 	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
12965 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
12966 			result = EX_VAR(opline->result.var);
12967 			ZVAL_COPY_VALUE(result, array_ptr);
12968 			if (IS_TMP_VAR != IS_TMP_VAR) {
12969 				Z_ADDREF_P(array_ptr);
12970 			}
12971 			if (Z_OBJ_P(array_ptr)->properties
12972 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
12973 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
12974 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
12975 				}
12976 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
12977 			}
12978 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
12979 
12980 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
12981 		} else {
12982 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
12983 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 0);
12984 			zend_bool is_empty;
12985 
12986 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
12987 				zval_ptr_dtor_nogc(free_op1);
12988 				if (iter) {
12989 					OBJ_RELEASE(&iter->std);
12990 				}
12991 				if (!EG(exception)) {
12992 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
12993 				}
12994 				ZVAL_UNDEF(EX_VAR(opline->result.var));
12995 				HANDLE_EXCEPTION();
12996 			}
12997 
12998 			iter->index = 0;
12999 			if (iter->funcs->rewind) {
13000 				iter->funcs->rewind(iter);
13001 				if (UNEXPECTED(EG(exception) != NULL)) {
13002 					OBJ_RELEASE(&iter->std);
13003 					zval_ptr_dtor_nogc(free_op1);
13004 					ZVAL_UNDEF(EX_VAR(opline->result.var));
13005 					HANDLE_EXCEPTION();
13006 				}
13007 			}
13008 
13009 			is_empty = iter->funcs->valid(iter) != SUCCESS;
13010 
13011 			if (UNEXPECTED(EG(exception) != NULL)) {
13012 				OBJ_RELEASE(&iter->std);
13013 				zval_ptr_dtor_nogc(free_op1);
13014 				ZVAL_UNDEF(EX_VAR(opline->result.var));
13015 				HANDLE_EXCEPTION();
13016 			}
13017 			iter->index = -1; /* will be set to 0 before using next handler */
13018 
13019 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
13020 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
13021 
13022 			zval_ptr_dtor_nogc(free_op1);
13023 			if (UNEXPECTED(EG(exception))) {
13024 				HANDLE_EXCEPTION();
13025 			} else if (is_empty) {
13026 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
13027 				ZEND_VM_CONTINUE();
13028 			} else {
13029 				ZEND_VM_NEXT_OPCODE();
13030 			}
13031 		}
13032 	} else {
13033 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
13034 		ZVAL_UNDEF(EX_VAR(opline->result.var));
13035 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
13036 		zval_ptr_dtor_nogc(free_op1);
13037 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
13038 	}
13039 }
13040 
13041 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13042 {
13043 	USE_OPLINE
13044 	zend_free_op free_op1;
13045 	zval *array_ptr, *array_ref;
13046 
13047 	SAVE_OPLINE();
13048 
13049 	if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
13050 		array_ref = array_ptr = NULL;
13051 		if (Z_ISREF_P(array_ref)) {
13052 			array_ptr = Z_REFVAL_P(array_ref);
13053 		}
13054 	} else {
13055 		array_ref = array_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13056 	}
13057 
13058 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
13059 		if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
13060 			if (array_ptr == array_ref) {
13061 				ZVAL_NEW_REF(array_ref, array_ref);
13062 				array_ptr = Z_REFVAL_P(array_ref);
13063 			}
13064 			Z_ADDREF_P(array_ref);
13065 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
13066 		} else {
13067 			array_ref = EX_VAR(opline->result.var);
13068 			ZVAL_NEW_REF(array_ref, array_ptr);
13069 			array_ptr = Z_REFVAL_P(array_ref);
13070 		}
13071 		if (IS_TMP_VAR == IS_CONST) {
13072 			zval_copy_ctor_func(array_ptr);
13073 		} else {
13074 			SEPARATE_ARRAY(array_ptr);
13075 		}
13076 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
13077 
13078 		ZEND_VM_NEXT_OPCODE();
13079 	} else if (IS_TMP_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
13080 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
13081 			if (IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) {
13082 				if (array_ptr == array_ref) {
13083 					ZVAL_NEW_REF(array_ref, array_ref);
13084 					array_ptr = Z_REFVAL_P(array_ref);
13085 				}
13086 				Z_ADDREF_P(array_ref);
13087 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
13088 			} else {
13089 				array_ptr = EX_VAR(opline->result.var);
13090 				ZVAL_COPY_VALUE(array_ptr, array_ref);
13091 			}
13092 			if (Z_OBJ_P(array_ptr)->properties
13093 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
13094 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
13095 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
13096 				}
13097 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
13098 			}
13099 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
13100 
13101 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13102 		} else {
13103 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
13104 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 1);
13105 			zend_bool is_empty;
13106 
13107 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
13108 				if (IS_TMP_VAR == IS_VAR) {
13109 
13110 				} else {
13111 					zval_ptr_dtor_nogc(free_op1);
13112 				}
13113 				if (!EG(exception)) {
13114 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
13115 				}
13116 				ZVAL_UNDEF(EX_VAR(opline->result.var));
13117 				HANDLE_EXCEPTION();
13118 			}
13119 
13120 			iter->index = 0;
13121 			if (iter->funcs->rewind) {
13122 				iter->funcs->rewind(iter);
13123 				if (UNEXPECTED(EG(exception) != NULL)) {
13124 					OBJ_RELEASE(&iter->std);
13125 					if (IS_TMP_VAR == IS_VAR) {
13126 
13127 					} else {
13128 						zval_ptr_dtor_nogc(free_op1);
13129 					}
13130 					ZVAL_UNDEF(EX_VAR(opline->result.var));
13131 					HANDLE_EXCEPTION();
13132 				}
13133 			}
13134 
13135 			is_empty = iter->funcs->valid(iter) != SUCCESS;
13136 
13137 			if (UNEXPECTED(EG(exception) != NULL)) {
13138 				OBJ_RELEASE(&iter->std);
13139 				if (IS_TMP_VAR == IS_VAR) {
13140 
13141 				} else {
13142 					zval_ptr_dtor_nogc(free_op1);
13143 				}
13144 				ZVAL_UNDEF(EX_VAR(opline->result.var));
13145 				HANDLE_EXCEPTION();
13146 			}
13147 			iter->index = -1; /* will be set to 0 before using next handler */
13148 
13149 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
13150 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
13151 
13152 			if (IS_TMP_VAR == IS_VAR) {
13153 
13154 			} else {
13155 				zval_ptr_dtor_nogc(free_op1);
13156 			}
13157 			if (UNEXPECTED(EG(exception))) {
13158 				HANDLE_EXCEPTION();
13159 			} else if (is_empty) {
13160 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
13161 				ZEND_VM_CONTINUE();
13162 			} else {
13163 				ZEND_VM_NEXT_OPCODE();
13164 			}
13165 		}
13166 	} else {
13167 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
13168 		ZVAL_UNDEF(EX_VAR(opline->result.var));
13169 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
13170 		if (IS_TMP_VAR == IS_VAR) {
13171 
13172 		} else {
13173 			zval_ptr_dtor_nogc(free_op1);
13174 		}
13175 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
13176 	}
13177 }
13178 
13179 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_END_SILENCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13180 {
13181 	USE_OPLINE
13182 
13183 	if (!EG(error_reporting) && Z_LVAL_P(EX_VAR(opline->op1.var)) != 0) {
13184 		EG(error_reporting) = Z_LVAL_P(EX_VAR(opline->op1.var));
13185 	}
13186 	ZEND_VM_NEXT_OPCODE();
13187 }
13188 
13189 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13190 {
13191 	USE_OPLINE
13192 	zend_free_op free_op1;
13193 	zval *value;
13194 	zval *ref = NULL;
13195 	int ret;
13196 
13197 	SAVE_OPLINE();
13198 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13199 
13200 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
13201 		if (IS_TMP_VAR == IS_VAR) {
13202 			ref = value;
13203 		}
13204 		value = Z_REFVAL_P(value);
13205 	}
13206 
13207 	ret = i_zend_is_true(value);
13208 
13209 	if (UNEXPECTED(EG(exception))) {
13210 		zval_ptr_dtor_nogc(free_op1);
13211 		ZVAL_UNDEF(EX_VAR(opline->result.var));
13212 		HANDLE_EXCEPTION();
13213 	}
13214 
13215 	if (ret) {
13216 		zval *result = EX_VAR(opline->result.var);
13217 
13218 		ZVAL_COPY_VALUE(result, value);
13219 		if (IS_TMP_VAR == IS_CONST) {
13220 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
13221 		} else if (IS_TMP_VAR == IS_CV) {
13222 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
13223 		} else if (IS_TMP_VAR == IS_VAR && ref) {
13224 			zend_reference *r = Z_REF_P(ref);
13225 
13226 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
13227 				efree_size(r, sizeof(zend_reference));
13228 			} else if (Z_OPT_REFCOUNTED_P(result)) {
13229 				Z_ADDREF_P(result);
13230 			}
13231 		}
13232 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
13233 		ZEND_VM_CONTINUE();
13234 	}
13235 
13236 	zval_ptr_dtor_nogc(free_op1);
13237 	ZEND_VM_NEXT_OPCODE();
13238 }
13239 
13240 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13241 {
13242 	USE_OPLINE
13243 	zend_free_op free_op1;
13244 	zval *value;
13245 	zval *ref = NULL;
13246 
13247 	SAVE_OPLINE();
13248 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13249 
13250 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) && Z_ISREF_P(value)) {
13251 		if (IS_TMP_VAR == IS_VAR) {
13252 			ref = value;
13253 		}
13254 		value = Z_REFVAL_P(value);
13255 	}
13256 
13257 	if (Z_TYPE_P(value) > IS_NULL) {
13258 		zval *result = EX_VAR(opline->result.var);
13259 		ZVAL_COPY_VALUE(result, value);
13260 		if (IS_TMP_VAR == IS_CONST) {
13261 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
13262 		} else if (IS_TMP_VAR == IS_CV) {
13263 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
13264 		} else if (IS_TMP_VAR == IS_VAR && ref) {
13265 			zend_reference *r = Z_REF_P(ref);
13266 
13267 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
13268 				efree_size(r, sizeof(zend_reference));
13269 			} else if (Z_OPT_REFCOUNTED_P(result)) {
13270 				Z_ADDREF_P(result);
13271 			}
13272 		}
13273 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
13274 		ZEND_VM_CONTINUE();
13275 	}
13276 
13277 	zval_ptr_dtor_nogc(free_op1);
13278 	ZEND_VM_NEXT_OPCODE();
13279 }
13280 
13281 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13282 {
13283 	USE_OPLINE
13284 	zend_free_op free_op1;
13285 	zval *value;
13286 	zval *result = EX_VAR(opline->result.var);
13287 
13288 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13289 	if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
13290 		SAVE_OPLINE();
13291 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
13292 		ZVAL_NULL(result);
13293 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13294 	}
13295 
13296 	if (IS_TMP_VAR == IS_CV) {
13297 		ZVAL_DEREF(value);
13298 		ZVAL_COPY(result, value);
13299 	} else if (IS_TMP_VAR == IS_VAR) {
13300 		if (UNEXPECTED(Z_ISREF_P(value))) {
13301 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
13302 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
13303 				efree_size(Z_REF_P(value), sizeof(zend_reference));
13304 			} else if (Z_OPT_REFCOUNTED_P(result)) {
13305 				Z_ADDREF_P(result);
13306 			}
13307 		} else {
13308 			ZVAL_COPY_VALUE(result, value);
13309 		}
13310 	} else {
13311 		ZVAL_COPY_VALUE(result, value);
13312 		if (IS_TMP_VAR == IS_CONST) {
13313 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
13314 				Z_ADDREF_P(result);
13315 			}
13316 		}
13317 	}
13318 	ZEND_VM_NEXT_OPCODE();
13319 }
13320 
13321 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13322 {
13323 	USE_OPLINE
13324 
13325 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
13326 
13327 	zval *val;
13328 	zend_free_op free_op1;
13329 
13330 	SAVE_OPLINE();
13331 	val = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13332 
13333 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
13334 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
13335 		zval_ptr_dtor_nogc(free_op1);
13336 		UNDEF_RESULT();
13337 		HANDLE_EXCEPTION();
13338 	}
13339 
13340 	if (Z_TYPE_P(val) == IS_ARRAY) {
13341 		ZVAL_COPY_VALUE(&generator->values, val);
13342 		if (IS_TMP_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
13343 			Z_ADDREF_P(val);
13344 		}
13345 		Z_FE_POS(generator->values) = 0;
13346 
13347 	} else if (IS_TMP_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
13348 		zend_class_entry *ce = Z_OBJCE_P(val);
13349 		if (ce == zend_ce_generator) {
13350 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
13351 
13352 			if (IS_TMP_VAR != IS_TMP_VAR) {
13353 				Z_ADDREF_P(val);
13354 			}
13355 
13356 			if (Z_ISUNDEF(new_gen->retval)) {
13357 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
13358 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
13359 					zval_ptr_dtor(val);
13360 					UNDEF_RESULT();
13361 					HANDLE_EXCEPTION();
13362 				} else {
13363 					zend_generator_yield_from(generator, new_gen);
13364 				}
13365 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
13366 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
13367 				zval_ptr_dtor(val);
13368 				UNDEF_RESULT();
13369 				HANDLE_EXCEPTION();
13370 			} else {
13371 				if (RETURN_VALUE_USED(opline)) {
13372 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
13373 				}
13374 				ZEND_VM_NEXT_OPCODE();
13375 			}
13376 		} else {
13377 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
13378 			zval_ptr_dtor_nogc(free_op1);
13379 
13380 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
13381 				if (!EG(exception)) {
13382 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
13383 				}
13384 				UNDEF_RESULT();
13385 				HANDLE_EXCEPTION();
13386 			}
13387 
13388 			iter->index = 0;
13389 			if (iter->funcs->rewind) {
13390 				iter->funcs->rewind(iter);
13391 				if (UNEXPECTED(EG(exception) != NULL)) {
13392 					OBJ_RELEASE(&iter->std);
13393 					UNDEF_RESULT();
13394 					HANDLE_EXCEPTION();
13395 				}
13396 			}
13397 
13398 			ZVAL_OBJ(&generator->values, &iter->std);
13399 		}
13400 	} else {
13401 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
13402 		UNDEF_RESULT();
13403 		HANDLE_EXCEPTION();
13404 	}
13405 
13406 	/* This is the default return value
13407 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
13408 	if (RETURN_VALUE_USED(opline)) {
13409 		ZVAL_NULL(EX_VAR(opline->result.var));
13410 	}
13411 
13412 	/* This generator has no send target (though the generator we delegate to might have one) */
13413 	generator->send_target = NULL;
13414 
13415 	/* We increment to the next op, so we are at the correct position when the
13416 	 * generator is resumed. */
13417 	ZEND_VM_INC_OPCODE();
13418 
13419 	/* The GOTO VM uses a local opline variable. We need to set the opline
13420 	 * variable in execute_data so we don't resume at an old position. */
13421 	SAVE_OPLINE();
13422 
13423 	ZEND_VM_RETURN();
13424 }
13425 
13426 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13427 {
13428 	USE_OPLINE
13429 	zval *value;
13430 	int result = 0;
13431 	zend_free_op free_op1;
13432 
13433 	SAVE_OPLINE();
13434 	value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13435 	if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
13436 		if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
13437 			const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
13438 
13439 			if (EXPECTED(type_name != NULL)) {
13440 				result = 1;
13441 			}
13442 		} else {
13443 			result = 1;
13444 		}
13445 	} else if (UNEXPECTED(opline->extended_value == _IS_BOOL) &&
13446 			   EXPECTED(Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE)) {
13447 		result = 1;
13448 	}
13449 	zval_ptr_dtor_nogc(free_op1);
13450 	ZEND_VM_SMART_BRANCH(result, 1);
13451 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
13452 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13453 }
13454 
13455 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13456 {
13457 	USE_OPLINE
13458 	zend_free_op free_op1;
13459 	zval *op1, *op2;
13460 	int result;
13461 
13462 	SAVE_OPLINE();
13463 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13464 	op2 = EX_CONSTANT(opline->op2);
13465 	result = fast_is_identical_function(op1, op2);
13466 	zval_ptr_dtor_nogc(free_op1);
13467 
13468 	ZEND_VM_SMART_BRANCH(result, 1);
13469 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
13470 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13471 }
13472 
13473 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13474 {
13475 	USE_OPLINE
13476 	zend_free_op free_op1;
13477 	zval *op1, *op2;
13478 	int result;
13479 
13480 	SAVE_OPLINE();
13481 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13482 	op2 = EX_CONSTANT(opline->op2);
13483 	result = fast_is_not_identical_function(op1, op2);
13484 	zval_ptr_dtor_nogc(free_op1);
13485 
13486 	ZEND_VM_SMART_BRANCH(result, 1);
13487 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
13488 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13489 }
13490 
13491 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13492 {
13493 	USE_OPLINE
13494 	zval *container;
13495 	zend_free_op free_op1;
13496 
13497 	SAVE_OPLINE();
13498 
13499 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
13500         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
13501             zend_throw_error(NULL, "Cannot use temporary expression in write context");
13502 
13503 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
13504 			ZVAL_UNDEF(EX_VAR(opline->result.var));
13505 			HANDLE_EXCEPTION();
13506         }
13507 		container = NULL;
13508 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
13509 		if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
13510 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
13511 		}
13512 
13513 
13514 	} else {
13515 		if (IS_CONST == IS_UNUSED) {
13516 			zend_throw_error(NULL, "Cannot use [] for reading");
13517 
13518 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
13519 			ZVAL_UNDEF(EX_VAR(opline->result.var));
13520 			HANDLE_EXCEPTION();
13521 		}
13522 		container = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13523 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
13524 
13525 		zval_ptr_dtor_nogc(free_op1);
13526 	}
13527 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13528 }
13529 
13530 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13531 {
13532 	USE_OPLINE
13533 	zend_free_op free_op1;
13534 	zval *container;
13535 
13536 	zval *offset;
13537 
13538 	SAVE_OPLINE();
13539 	container = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13540 
13541 	if (IS_TMP_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
13542 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
13543 	}
13544 
13545 	offset = EX_CONSTANT(opline->op2);
13546 
13547 	if (IS_TMP_VAR == IS_CONST ||
13548 	    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
13549 		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
13550 			container = Z_REFVAL_P(container);
13551 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
13552 				goto fetch_obj_r_no_object;
13553 			}
13554 		} else {
13555 			goto fetch_obj_r_no_object;
13556 		}
13557 	}
13558 
13559 	/* here we are sure we are dealing with an object */
13560 	do {
13561 		zend_object *zobj = Z_OBJ_P(container);
13562 		zval *retval;
13563 
13564 		if (IS_CONST == IS_CONST &&
13565 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
13566 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
13567 
13568 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
13569 				retval = OBJ_PROP(zobj, prop_offset);
13570 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
13571 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
13572 					break;
13573 				}
13574 			} else if (EXPECTED(zobj->properties != NULL)) {
13575 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
13576 				if (EXPECTED(retval)) {
13577 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
13578 					break;
13579 				}
13580 			}
13581 		}
13582 
13583 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
13584 			zend_string *property_name;
13585 fetch_obj_r_no_object:
13586 			property_name = zval_get_string(offset);
13587 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
13588 			zend_string_release(property_name);
13589 			ZVAL_NULL(EX_VAR(opline->result.var));
13590 		} else {
13591 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
13592 
13593 			if (retval != EX_VAR(opline->result.var)) {
13594 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
13595 			}
13596 		}
13597 	} while (0);
13598 
13599 	zval_ptr_dtor_nogc(free_op1);
13600 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13601 }
13602 
13603 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13604 {
13605 	USE_OPLINE
13606 	zval *container;
13607 
13608 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
13609 		/* Behave like FETCH_OBJ_W */
13610 		zend_free_op free_op1;
13611 		zval *property;
13612 
13613 		SAVE_OPLINE();
13614 		container = NULL;
13615 
13616 		if (IS_TMP_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
13617 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
13618 		}
13619 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
13620 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
13621 
13622 
13623 			ZVAL_UNDEF(EX_VAR(opline->result.var));
13624 			HANDLE_EXCEPTION();
13625 		}
13626 		property = EX_CONSTANT(opline->op2);
13627 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
13628 
13629 		if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
13630 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
13631 		}
13632 
13633 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13634 	} else {
13635 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
13636 	}
13637 }
13638 
13639 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13640 {
13641 	USE_OPLINE
13642 
13643 	zend_string **rope;
13644 	zval *var;
13645 
13646 	/* op1 and result are the same */
13647 	rope = (zend_string**)EX_VAR(opline->op1.var);
13648 	if (IS_CONST == IS_CONST) {
13649 		var = EX_CONSTANT(opline->op2);
13650 		rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
13651 	} else {
13652 		var = EX_CONSTANT(opline->op2);
13653 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
13654 			if (IS_CONST == IS_CV) {
13655 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
13656 			} else {
13657 				rope[opline->extended_value] = Z_STR_P(var);
13658 			}
13659 		} else {
13660 			SAVE_OPLINE();
13661 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
13662 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
13663 			}
13664 			rope[opline->extended_value] = _zval_get_string_func(var);
13665 
13666 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13667 		}
13668 	}
13669 	ZEND_VM_NEXT_OPCODE();
13670 }
13671 
13672 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13673 {
13674 	USE_OPLINE
13675 
13676 	zend_string **rope;
13677 	zval *var, *ret;
13678 	uint32_t i;
13679 	size_t len = 0;
13680 	char *target;
13681 
13682 	rope = (zend_string**)EX_VAR(opline->op1.var);
13683 	if (IS_CONST == IS_CONST) {
13684 		var = EX_CONSTANT(opline->op2);
13685 		rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
13686 	} else {
13687 		var = EX_CONSTANT(opline->op2);
13688 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
13689 			if (IS_CONST == IS_CV) {
13690 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
13691 			} else {
13692 				rope[opline->extended_value] = Z_STR_P(var);
13693 			}
13694 		} else {
13695 			SAVE_OPLINE();
13696 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
13697 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
13698 			}
13699 			rope[opline->extended_value] = _zval_get_string_func(var);
13700 
13701 			if (UNEXPECTED(EG(exception))) {
13702 				for (i = 0; i <= opline->extended_value; i++) {
13703 					zend_string_release(rope[i]);
13704 				}
13705 				ZVAL_UNDEF(EX_VAR(opline->result.var));
13706 				HANDLE_EXCEPTION();
13707 			}
13708 		}
13709 	}
13710 	for (i = 0; i <= opline->extended_value; i++) {
13711 		len += ZSTR_LEN(rope[i]);
13712 	}
13713 	ret = EX_VAR(opline->result.var);
13714 	ZVAL_STR(ret, zend_string_alloc(len, 0));
13715 	target = Z_STRVAL_P(ret);
13716 	for (i = 0; i <= opline->extended_value; i++) {
13717 		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
13718 		target += ZSTR_LEN(rope[i]);
13719 		zend_string_release(rope[i]);
13720 	}
13721 	*target = '\0';
13722 
13723 	ZEND_VM_NEXT_OPCODE();
13724 }
13725 
13726 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13727 {
13728 	USE_OPLINE
13729 	zend_free_op free_op1;
13730 	zval *expr_ptr, new_expr;
13731 
13732 	SAVE_OPLINE();
13733 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
13734 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
13735 		expr_ptr = NULL;
13736 		ZVAL_MAKE_REF(expr_ptr);
13737 		Z_ADDREF_P(expr_ptr);
13738 
13739 	} else {
13740 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13741 		if (IS_TMP_VAR == IS_TMP_VAR) {
13742 			/* pass */
13743 		} else if (IS_TMP_VAR == IS_CONST) {
13744 			if (Z_REFCOUNTED_P(expr_ptr)) {
13745 				Z_ADDREF_P(expr_ptr);
13746 			}
13747 		} else if (IS_TMP_VAR == IS_CV) {
13748 			ZVAL_DEREF(expr_ptr);
13749 			if (Z_REFCOUNTED_P(expr_ptr)) {
13750 				Z_ADDREF_P(expr_ptr);
13751 			}
13752 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
13753 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
13754 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
13755 
13756 				expr_ptr = Z_REFVAL_P(expr_ptr);
13757 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
13758 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
13759 					expr_ptr = &new_expr;
13760 					efree_size(ref, sizeof(zend_reference));
13761 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
13762 					Z_ADDREF_P(expr_ptr);
13763 				}
13764 			}
13765 		}
13766 	}
13767 
13768 	if (IS_CONST != IS_UNUSED) {
13769 
13770 		zval *offset = EX_CONSTANT(opline->op2);
13771 		zend_string *str;
13772 		zend_ulong hval;
13773 
13774 add_again:
13775 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
13776 			str = Z_STR_P(offset);
13777 			if (IS_CONST != IS_CONST) {
13778 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
13779 					goto num_index;
13780 				}
13781 			}
13782 str_index:
13783 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
13784 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
13785 			hval = Z_LVAL_P(offset);
13786 num_index:
13787 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
13788 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
13789 			offset = Z_REFVAL_P(offset);
13790 			goto add_again;
13791 		} else if (Z_TYPE_P(offset) == IS_NULL) {
13792 			str = ZSTR_EMPTY_ALLOC();
13793 			goto str_index;
13794 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
13795 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
13796 			goto num_index;
13797 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
13798 			hval = 0;
13799 			goto num_index;
13800 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
13801 			hval = 1;
13802 			goto num_index;
13803 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
13804 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
13805 			str = ZSTR_EMPTY_ALLOC();
13806 			goto str_index;
13807 		} else {
13808 			zend_error(E_WARNING, "Illegal offset type");
13809 			zval_ptr_dtor(expr_ptr);
13810 		}
13811 
13812 	} else {
13813 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
13814 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
13815 			zval_ptr_dtor(expr_ptr);
13816 		}
13817 	}
13818 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
13819 }
13820 
13821 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13822 {
13823 	zval *array;
13824 	uint32_t size;
13825 	USE_OPLINE
13826 
13827 	array = EX_VAR(opline->result.var);
13828 	if (IS_TMP_VAR != IS_UNUSED) {
13829 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
13830 	} else {
13831 		size = 0;
13832 	}
13833 	ZVAL_NEW_ARR(array);
13834 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
13835 
13836 	if (IS_TMP_VAR != IS_UNUSED) {
13837 		/* Explicitly initialize array as not-packed if flag is set */
13838 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
13839 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
13840 		}
13841 	}
13842 
13843 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
13844 }
13845 
13846 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13847 {
13848 	USE_OPLINE
13849 
13850 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
13851 
13852 	SAVE_OPLINE();
13853 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
13854 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
13855 
13856 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
13857 		UNDEF_RESULT();
13858 		HANDLE_EXCEPTION();
13859 	}
13860 
13861 	/* Destroy the previously yielded value */
13862 	zval_ptr_dtor(&generator->value);
13863 
13864 	/* Destroy the previously yielded key */
13865 	zval_ptr_dtor(&generator->key);
13866 
13867 	/* Set the new yielded value */
13868 	if (IS_TMP_VAR != IS_UNUSED) {
13869 		zend_free_op free_op1;
13870 
13871 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
13872 			/* Constants and temporary variables aren't yieldable by reference,
13873 			 * but we still allow them with a notice. */
13874 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
13875 				zval *value;
13876 
13877 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
13878 
13879 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13880 				ZVAL_COPY_VALUE(&generator->value, value);
13881 				if (IS_TMP_VAR == IS_CONST) {
13882 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
13883 						Z_ADDREF(generator->value);
13884 					}
13885 				}
13886 			} else {
13887 				zval *value_ptr = NULL;
13888 
13889 				/* If a function call result is yielded and the function did
13890 				 * not return by reference we throw a notice. */
13891 				if (IS_TMP_VAR == IS_VAR &&
13892 				    (value_ptr == &EG(uninitialized_zval) ||
13893 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
13894 				      !Z_ISREF_P(value_ptr)))) {
13895 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
13896 				} else {
13897 					ZVAL_MAKE_REF(value_ptr);
13898 				}
13899 				ZVAL_COPY(&generator->value, value_ptr);
13900 
13901 			}
13902 		} else {
13903 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13904 
13905 			/* Consts, temporary variables and references need copying */
13906 			if (IS_TMP_VAR == IS_CONST) {
13907 				ZVAL_COPY_VALUE(&generator->value, value);
13908 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
13909 					Z_ADDREF(generator->value);
13910 				}
13911 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
13912 				ZVAL_COPY_VALUE(&generator->value, value);
13913             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
13914 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
13915 
13916 			} else {
13917 				ZVAL_COPY_VALUE(&generator->value, value);
13918 				if (IS_TMP_VAR == IS_CV) {
13919 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
13920 				}
13921 			}
13922 		}
13923 	} else {
13924 		/* If no value was specified yield null */
13925 		ZVAL_NULL(&generator->value);
13926 	}
13927 
13928 	/* Set the new yielded key */
13929 	if (IS_CONST != IS_UNUSED) {
13930 
13931 		zval *key = EX_CONSTANT(opline->op2);
13932 
13933 		/* Consts, temporary variables and references need copying */
13934 		if (IS_CONST == IS_CONST) {
13935 			ZVAL_COPY_VALUE(&generator->key, key);
13936 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
13937 				Z_ADDREF(generator->key);
13938 			}
13939 		} else if (IS_CONST == IS_TMP_VAR) {
13940 			ZVAL_COPY_VALUE(&generator->key, key);
13941 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
13942 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
13943 
13944 		} else {
13945 			ZVAL_COPY_VALUE(&generator->key, key);
13946 			if (IS_CONST == IS_CV) {
13947 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
13948 			}
13949 		}
13950 
13951 		if (Z_TYPE(generator->key) == IS_LONG
13952 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
13953 		) {
13954 			generator->largest_used_integer_key = Z_LVAL(generator->key);
13955 		}
13956 	} else {
13957 		/* If no key was specified we use auto-increment keys */
13958 		generator->largest_used_integer_key++;
13959 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
13960 	}
13961 
13962 	if (RETURN_VALUE_USED(opline)) {
13963 		/* If the return value of yield is used set the send
13964 		 * target and initialize it to NULL */
13965 		generator->send_target = EX_VAR(opline->result.var);
13966 		ZVAL_NULL(generator->send_target);
13967 	} else {
13968 		generator->send_target = NULL;
13969 	}
13970 
13971 	/* We increment to the next op, so we are at the correct position when the
13972 	 * generator is resumed. */
13973 	ZEND_VM_INC_OPCODE();
13974 
13975 	/* The GOTO VM uses a local opline variable. We need to set the opline
13976 	 * variable in execute_data so we don't resume at an old position. */
13977 	SAVE_OPLINE();
13978 
13979 	ZEND_VM_RETURN();
13980 }
13981 
13982 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
13983 {
13984 	USE_OPLINE
13985 	zend_free_op free_op1;
13986 	zval *op1;
13987 	HashTable *ht = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
13988 	int result;
13989 
13990 	SAVE_OPLINE();
13991 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
13992 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
13993 		result = zend_hash_exists(ht, Z_STR_P(op1));
13994 	} else if (opline->extended_value) {
13995 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
13996 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
13997 		} else {
13998 			result = 0;
13999 		}
14000 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
14001 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
14002 	} else {
14003 		zend_string *key;
14004 		zval key_tmp, result_tmp;
14005 
14006 		result = 0;
14007 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
14008 			ZVAL_STR(&key_tmp, key);
14009 			compare_function(&result_tmp, op1, &key_tmp);
14010 			if (Z_LVAL(result_tmp) == 0) {
14011 				result = 1;
14012 				break;
14013 			}
14014 		} ZEND_HASH_FOREACH_END();
14015 	}
14016 	zval_ptr_dtor_nogc(free_op1);
14017 	ZEND_VM_SMART_BRANCH(result, 1);
14018 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14019 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14020 }
14021 
14022 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14023 {
14024 	USE_OPLINE
14025 	zend_free_op free_op1, free_op2;
14026 	zval *op1, *op2;
14027 	int result;
14028 
14029 	SAVE_OPLINE();
14030 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14031 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14032 	result = fast_is_identical_function(op1, op2);
14033 	zval_ptr_dtor_nogc(free_op1);
14034 	zval_ptr_dtor_nogc(free_op2);
14035 	ZEND_VM_SMART_BRANCH(result, 1);
14036 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14037 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14038 }
14039 
14040 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14041 {
14042 	USE_OPLINE
14043 	zend_free_op free_op1, free_op2;
14044 	zval *op1, *op2;
14045 	int result;
14046 
14047 	SAVE_OPLINE();
14048 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14049 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14050 	result = fast_is_not_identical_function(op1, op2);
14051 	zval_ptr_dtor_nogc(free_op1);
14052 	zval_ptr_dtor_nogc(free_op2);
14053 	ZEND_VM_SMART_BRANCH(result, 1);
14054 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14055 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14056 }
14057 
14058 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14059 {
14060 	USE_OPLINE
14061 
14062 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
14063 
14064 	SAVE_OPLINE();
14065 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
14066 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
14067 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
14068 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14069 		UNDEF_RESULT();
14070 		HANDLE_EXCEPTION();
14071 	}
14072 
14073 	/* Destroy the previously yielded value */
14074 	zval_ptr_dtor(&generator->value);
14075 
14076 	/* Destroy the previously yielded key */
14077 	zval_ptr_dtor(&generator->key);
14078 
14079 	/* Set the new yielded value */
14080 	if (IS_TMP_VAR != IS_UNUSED) {
14081 		zend_free_op free_op1;
14082 
14083 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
14084 			/* Constants and temporary variables aren't yieldable by reference,
14085 			 * but we still allow them with a notice. */
14086 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
14087 				zval *value;
14088 
14089 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
14090 
14091 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14092 				ZVAL_COPY_VALUE(&generator->value, value);
14093 				if (IS_TMP_VAR == IS_CONST) {
14094 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
14095 						Z_ADDREF(generator->value);
14096 					}
14097 				}
14098 			} else {
14099 				zval *value_ptr = NULL;
14100 
14101 				/* If a function call result is yielded and the function did
14102 				 * not return by reference we throw a notice. */
14103 				if (IS_TMP_VAR == IS_VAR &&
14104 				    (value_ptr == &EG(uninitialized_zval) ||
14105 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
14106 				      !Z_ISREF_P(value_ptr)))) {
14107 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
14108 				} else {
14109 					ZVAL_MAKE_REF(value_ptr);
14110 				}
14111 				ZVAL_COPY(&generator->value, value_ptr);
14112 
14113 			}
14114 		} else {
14115 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14116 
14117 			/* Consts, temporary variables and references need copying */
14118 			if (IS_TMP_VAR == IS_CONST) {
14119 				ZVAL_COPY_VALUE(&generator->value, value);
14120 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
14121 					Z_ADDREF(generator->value);
14122 				}
14123 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
14124 				ZVAL_COPY_VALUE(&generator->value, value);
14125             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
14126 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
14127 
14128 			} else {
14129 				ZVAL_COPY_VALUE(&generator->value, value);
14130 				if (IS_TMP_VAR == IS_CV) {
14131 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
14132 				}
14133 			}
14134 		}
14135 	} else {
14136 		/* If no value was specified yield null */
14137 		ZVAL_NULL(&generator->value);
14138 	}
14139 
14140 	/* Set the new yielded key */
14141 	if (IS_TMP_VAR != IS_UNUSED) {
14142 		zend_free_op free_op2;
14143 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14144 
14145 		/* Consts, temporary variables and references need copying */
14146 		if (IS_TMP_VAR == IS_CONST) {
14147 			ZVAL_COPY_VALUE(&generator->key, key);
14148 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
14149 				Z_ADDREF(generator->key);
14150 			}
14151 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
14152 			ZVAL_COPY_VALUE(&generator->key, key);
14153 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
14154 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
14155 
14156 		} else {
14157 			ZVAL_COPY_VALUE(&generator->key, key);
14158 			if (IS_TMP_VAR == IS_CV) {
14159 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
14160 			}
14161 		}
14162 
14163 		if (Z_TYPE(generator->key) == IS_LONG
14164 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
14165 		) {
14166 			generator->largest_used_integer_key = Z_LVAL(generator->key);
14167 		}
14168 	} else {
14169 		/* If no key was specified we use auto-increment keys */
14170 		generator->largest_used_integer_key++;
14171 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
14172 	}
14173 
14174 	if (RETURN_VALUE_USED(opline)) {
14175 		/* If the return value of yield is used set the send
14176 		 * target and initialize it to NULL */
14177 		generator->send_target = EX_VAR(opline->result.var);
14178 		ZVAL_NULL(generator->send_target);
14179 	} else {
14180 		generator->send_target = NULL;
14181 	}
14182 
14183 	/* We increment to the next op, so we are at the correct position when the
14184 	 * generator is resumed. */
14185 	ZEND_VM_INC_OPCODE();
14186 
14187 	/* The GOTO VM uses a local opline variable. We need to set the opline
14188 	 * variable in execute_data so we don't resume at an old position. */
14189 	SAVE_OPLINE();
14190 
14191 	ZEND_VM_RETURN();
14192 }
14193 
14194 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14195 {
14196 	USE_OPLINE
14197 	zend_free_op free_op1, free_op2;
14198 	zval *op1, *op2;
14199 	int result;
14200 
14201 	SAVE_OPLINE();
14202 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14203 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14204 	result = fast_is_identical_function(op1, op2);
14205 	zval_ptr_dtor_nogc(free_op1);
14206 	zval_ptr_dtor_nogc(free_op2);
14207 	ZEND_VM_SMART_BRANCH(result, 1);
14208 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14209 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14210 }
14211 
14212 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14213 {
14214 	USE_OPLINE
14215 	zend_free_op free_op1, free_op2;
14216 	zval *op1, *op2;
14217 	int result;
14218 
14219 	SAVE_OPLINE();
14220 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14221 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14222 	result = fast_is_not_identical_function(op1, op2);
14223 	zval_ptr_dtor_nogc(free_op1);
14224 	zval_ptr_dtor_nogc(free_op2);
14225 	ZEND_VM_SMART_BRANCH(result, 1);
14226 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14227 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14228 }
14229 
14230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14231 {
14232 	USE_OPLINE
14233 
14234 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
14235 
14236 	SAVE_OPLINE();
14237 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
14238 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
14239 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
14240 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14241 		UNDEF_RESULT();
14242 		HANDLE_EXCEPTION();
14243 	}
14244 
14245 	/* Destroy the previously yielded value */
14246 	zval_ptr_dtor(&generator->value);
14247 
14248 	/* Destroy the previously yielded key */
14249 	zval_ptr_dtor(&generator->key);
14250 
14251 	/* Set the new yielded value */
14252 	if (IS_TMP_VAR != IS_UNUSED) {
14253 		zend_free_op free_op1;
14254 
14255 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
14256 			/* Constants and temporary variables aren't yieldable by reference,
14257 			 * but we still allow them with a notice. */
14258 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
14259 				zval *value;
14260 
14261 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
14262 
14263 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14264 				ZVAL_COPY_VALUE(&generator->value, value);
14265 				if (IS_TMP_VAR == IS_CONST) {
14266 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
14267 						Z_ADDREF(generator->value);
14268 					}
14269 				}
14270 			} else {
14271 				zval *value_ptr = NULL;
14272 
14273 				/* If a function call result is yielded and the function did
14274 				 * not return by reference we throw a notice. */
14275 				if (IS_TMP_VAR == IS_VAR &&
14276 				    (value_ptr == &EG(uninitialized_zval) ||
14277 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
14278 				      !Z_ISREF_P(value_ptr)))) {
14279 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
14280 				} else {
14281 					ZVAL_MAKE_REF(value_ptr);
14282 				}
14283 				ZVAL_COPY(&generator->value, value_ptr);
14284 
14285 			}
14286 		} else {
14287 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14288 
14289 			/* Consts, temporary variables and references need copying */
14290 			if (IS_TMP_VAR == IS_CONST) {
14291 				ZVAL_COPY_VALUE(&generator->value, value);
14292 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
14293 					Z_ADDREF(generator->value);
14294 				}
14295 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
14296 				ZVAL_COPY_VALUE(&generator->value, value);
14297             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
14298 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
14299 
14300 			} else {
14301 				ZVAL_COPY_VALUE(&generator->value, value);
14302 				if (IS_TMP_VAR == IS_CV) {
14303 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
14304 				}
14305 			}
14306 		}
14307 	} else {
14308 		/* If no value was specified yield null */
14309 		ZVAL_NULL(&generator->value);
14310 	}
14311 
14312 	/* Set the new yielded key */
14313 	if (IS_VAR != IS_UNUSED) {
14314 		zend_free_op free_op2;
14315 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
14316 
14317 		/* Consts, temporary variables and references need copying */
14318 		if (IS_VAR == IS_CONST) {
14319 			ZVAL_COPY_VALUE(&generator->key, key);
14320 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
14321 				Z_ADDREF(generator->key);
14322 			}
14323 		} else if (IS_VAR == IS_TMP_VAR) {
14324 			ZVAL_COPY_VALUE(&generator->key, key);
14325 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
14326 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
14327 			zval_ptr_dtor_nogc(free_op2);
14328 		} else {
14329 			ZVAL_COPY_VALUE(&generator->key, key);
14330 			if (IS_VAR == IS_CV) {
14331 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
14332 			}
14333 		}
14334 
14335 		if (Z_TYPE(generator->key) == IS_LONG
14336 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
14337 		) {
14338 			generator->largest_used_integer_key = Z_LVAL(generator->key);
14339 		}
14340 	} else {
14341 		/* If no key was specified we use auto-increment keys */
14342 		generator->largest_used_integer_key++;
14343 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
14344 	}
14345 
14346 	if (RETURN_VALUE_USED(opline)) {
14347 		/* If the return value of yield is used set the send
14348 		 * target and initialize it to NULL */
14349 		generator->send_target = EX_VAR(opline->result.var);
14350 		ZVAL_NULL(generator->send_target);
14351 	} else {
14352 		generator->send_target = NULL;
14353 	}
14354 
14355 	/* We increment to the next op, so we are at the correct position when the
14356 	 * generator is resumed. */
14357 	ZEND_VM_INC_OPCODE();
14358 
14359 	/* The GOTO VM uses a local opline variable. We need to set the opline
14360 	 * variable in execute_data so we don't resume at an old position. */
14361 	SAVE_OPLINE();
14362 
14363 	ZEND_VM_RETURN();
14364 }
14365 
14366 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14367 {
14368 	USE_OPLINE
14369 	zval *container;
14370 	zend_free_op free_op1;
14371 
14372 	SAVE_OPLINE();
14373 
14374 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
14375         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
14376             zend_throw_error(NULL, "Cannot use temporary expression in write context");
14377 
14378 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14379 			ZVAL_UNDEF(EX_VAR(opline->result.var));
14380 			HANDLE_EXCEPTION();
14381         }
14382 		container = NULL;
14383 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
14384 		if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
14385 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
14386 		}
14387 
14388 
14389 	} else {
14390 		if (IS_UNUSED == IS_UNUSED) {
14391 			zend_throw_error(NULL, "Cannot use [] for reading");
14392 
14393 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14394 			ZVAL_UNDEF(EX_VAR(opline->result.var));
14395 			HANDLE_EXCEPTION();
14396 		}
14397 		container = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14398 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
14399 
14400 		zval_ptr_dtor_nogc(free_op1);
14401 	}
14402 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14403 }
14404 
14405 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14406 {
14407 	USE_OPLINE
14408 
14409 	SAVE_OPLINE();
14410 	if (IS_TMP_VAR == IS_UNUSED) {
14411 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
14412 	} else {
14413 /* prevents "undefined variable opline" errors */
14414 #if 0 || (IS_TMP_VAR != IS_UNUSED)
14415 		zval *retval_ref, *retval_ptr;
14416 		zend_free_op free_op1;
14417 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
14418 
14419 		retval_ref = retval_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14420 
14421 		if (IS_TMP_VAR == IS_CONST) {
14422 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
14423 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
14424 		} else if (IS_TMP_VAR == IS_VAR) {
14425 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
14426 				retval_ptr = Z_INDIRECT_P(retval_ptr);
14427 			}
14428 			ZVAL_DEREF(retval_ptr);
14429 		} else if (IS_TMP_VAR == IS_CV) {
14430 			ZVAL_DEREF(retval_ptr);
14431 		}
14432 
14433 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
14434 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
14435 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
14436 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
14437 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
14438 			&& retval_ref != retval_ptr)
14439 		) {
14440 			/* A cast might happen - unwrap the reference if this is a by-value return */
14441 			if (Z_REFCOUNT_P(retval_ref) == 1) {
14442 				ZVAL_UNREF(retval_ref);
14443 			} else {
14444 				Z_DELREF_P(retval_ref);
14445 				ZVAL_COPY(retval_ref, retval_ptr);
14446 			}
14447 			retval_ptr = retval_ref;
14448 		}
14449 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
14450 #endif
14451 	}
14452 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14453 }
14454 
14455 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14456 {
14457 	USE_OPLINE
14458 	zend_free_op free_op1;
14459 	zval *expr_ptr, new_expr;
14460 
14461 	SAVE_OPLINE();
14462 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
14463 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
14464 		expr_ptr = NULL;
14465 		ZVAL_MAKE_REF(expr_ptr);
14466 		Z_ADDREF_P(expr_ptr);
14467 
14468 	} else {
14469 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14470 		if (IS_TMP_VAR == IS_TMP_VAR) {
14471 			/* pass */
14472 		} else if (IS_TMP_VAR == IS_CONST) {
14473 			if (Z_REFCOUNTED_P(expr_ptr)) {
14474 				Z_ADDREF_P(expr_ptr);
14475 			}
14476 		} else if (IS_TMP_VAR == IS_CV) {
14477 			ZVAL_DEREF(expr_ptr);
14478 			if (Z_REFCOUNTED_P(expr_ptr)) {
14479 				Z_ADDREF_P(expr_ptr);
14480 			}
14481 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
14482 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
14483 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
14484 
14485 				expr_ptr = Z_REFVAL_P(expr_ptr);
14486 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
14487 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
14488 					expr_ptr = &new_expr;
14489 					efree_size(ref, sizeof(zend_reference));
14490 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
14491 					Z_ADDREF_P(expr_ptr);
14492 				}
14493 			}
14494 		}
14495 	}
14496 
14497 	if (IS_UNUSED != IS_UNUSED) {
14498 
14499 		zval *offset = NULL;
14500 		zend_string *str;
14501 		zend_ulong hval;
14502 
14503 add_again:
14504 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
14505 			str = Z_STR_P(offset);
14506 			if (IS_UNUSED != IS_CONST) {
14507 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
14508 					goto num_index;
14509 				}
14510 			}
14511 str_index:
14512 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
14513 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
14514 			hval = Z_LVAL_P(offset);
14515 num_index:
14516 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
14517 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
14518 			offset = Z_REFVAL_P(offset);
14519 			goto add_again;
14520 		} else if (Z_TYPE_P(offset) == IS_NULL) {
14521 			str = ZSTR_EMPTY_ALLOC();
14522 			goto str_index;
14523 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
14524 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
14525 			goto num_index;
14526 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
14527 			hval = 0;
14528 			goto num_index;
14529 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
14530 			hval = 1;
14531 			goto num_index;
14532 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
14533 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
14534 			str = ZSTR_EMPTY_ALLOC();
14535 			goto str_index;
14536 		} else {
14537 			zend_error(E_WARNING, "Illegal offset type");
14538 			zval_ptr_dtor(expr_ptr);
14539 		}
14540 
14541 	} else {
14542 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
14543 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
14544 			zval_ptr_dtor(expr_ptr);
14545 		}
14546 	}
14547 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14548 }
14549 
14550 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14551 {
14552 	zval *array;
14553 	uint32_t size;
14554 	USE_OPLINE
14555 
14556 	array = EX_VAR(opline->result.var);
14557 	if (IS_TMP_VAR != IS_UNUSED) {
14558 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
14559 	} else {
14560 		size = 0;
14561 	}
14562 	ZVAL_NEW_ARR(array);
14563 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
14564 
14565 	if (IS_TMP_VAR != IS_UNUSED) {
14566 		/* Explicitly initialize array as not-packed if flag is set */
14567 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
14568 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
14569 		}
14570 	}
14571 
14572 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
14573 }
14574 
14575 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14576 {
14577 	USE_OPLINE
14578 
14579 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
14580 
14581 	SAVE_OPLINE();
14582 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
14583 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
14584 
14585 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14586 		UNDEF_RESULT();
14587 		HANDLE_EXCEPTION();
14588 	}
14589 
14590 	/* Destroy the previously yielded value */
14591 	zval_ptr_dtor(&generator->value);
14592 
14593 	/* Destroy the previously yielded key */
14594 	zval_ptr_dtor(&generator->key);
14595 
14596 	/* Set the new yielded value */
14597 	if (IS_TMP_VAR != IS_UNUSED) {
14598 		zend_free_op free_op1;
14599 
14600 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
14601 			/* Constants and temporary variables aren't yieldable by reference,
14602 			 * but we still allow them with a notice. */
14603 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
14604 				zval *value;
14605 
14606 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
14607 
14608 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14609 				ZVAL_COPY_VALUE(&generator->value, value);
14610 				if (IS_TMP_VAR == IS_CONST) {
14611 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
14612 						Z_ADDREF(generator->value);
14613 					}
14614 				}
14615 			} else {
14616 				zval *value_ptr = NULL;
14617 
14618 				/* If a function call result is yielded and the function did
14619 				 * not return by reference we throw a notice. */
14620 				if (IS_TMP_VAR == IS_VAR &&
14621 				    (value_ptr == &EG(uninitialized_zval) ||
14622 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
14623 				      !Z_ISREF_P(value_ptr)))) {
14624 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
14625 				} else {
14626 					ZVAL_MAKE_REF(value_ptr);
14627 				}
14628 				ZVAL_COPY(&generator->value, value_ptr);
14629 
14630 			}
14631 		} else {
14632 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14633 
14634 			/* Consts, temporary variables and references need copying */
14635 			if (IS_TMP_VAR == IS_CONST) {
14636 				ZVAL_COPY_VALUE(&generator->value, value);
14637 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
14638 					Z_ADDREF(generator->value);
14639 				}
14640 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
14641 				ZVAL_COPY_VALUE(&generator->value, value);
14642             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
14643 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
14644 
14645 			} else {
14646 				ZVAL_COPY_VALUE(&generator->value, value);
14647 				if (IS_TMP_VAR == IS_CV) {
14648 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
14649 				}
14650 			}
14651 		}
14652 	} else {
14653 		/* If no value was specified yield null */
14654 		ZVAL_NULL(&generator->value);
14655 	}
14656 
14657 	/* Set the new yielded key */
14658 	if (IS_UNUSED != IS_UNUSED) {
14659 
14660 		zval *key = NULL;
14661 
14662 		/* Consts, temporary variables and references need copying */
14663 		if (IS_UNUSED == IS_CONST) {
14664 			ZVAL_COPY_VALUE(&generator->key, key);
14665 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
14666 				Z_ADDREF(generator->key);
14667 			}
14668 		} else if (IS_UNUSED == IS_TMP_VAR) {
14669 			ZVAL_COPY_VALUE(&generator->key, key);
14670 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
14671 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
14672 
14673 		} else {
14674 			ZVAL_COPY_VALUE(&generator->key, key);
14675 			if (IS_UNUSED == IS_CV) {
14676 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
14677 			}
14678 		}
14679 
14680 		if (Z_TYPE(generator->key) == IS_LONG
14681 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
14682 		) {
14683 			generator->largest_used_integer_key = Z_LVAL(generator->key);
14684 		}
14685 	} else {
14686 		/* If no key was specified we use auto-increment keys */
14687 		generator->largest_used_integer_key++;
14688 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
14689 	}
14690 
14691 	if (RETURN_VALUE_USED(opline)) {
14692 		/* If the return value of yield is used set the send
14693 		 * target and initialize it to NULL */
14694 		generator->send_target = EX_VAR(opline->result.var);
14695 		ZVAL_NULL(generator->send_target);
14696 	} else {
14697 		generator->send_target = NULL;
14698 	}
14699 
14700 	/* We increment to the next op, so we are at the correct position when the
14701 	 * generator is resumed. */
14702 	ZEND_VM_INC_OPCODE();
14703 
14704 	/* The GOTO VM uses a local opline variable. We need to set the opline
14705 	 * variable in execute_data so we don't resume at an old position. */
14706 	SAVE_OPLINE();
14707 
14708 	ZEND_VM_RETURN();
14709 }
14710 
14711 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14712 {
14713 	USE_OPLINE
14714 	zend_free_op free_op1;
14715 	zval *op1;
14716 	zend_long count;
14717 
14718 	SAVE_OPLINE();
14719 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14720 	do {
14721 		if (Z_TYPE_P(op1) == IS_ARRAY) {
14722 			count = zend_array_count(Z_ARRVAL_P(op1));
14723 			break;
14724 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
14725 			/* first, we check if the handler is defined */
14726 			if (Z_OBJ_HT_P(op1)->count_elements) {
14727 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
14728 					break;
14729 				}
14730 			}
14731 
14732 			/* if not and the object implements Countable we call its count() method */
14733 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
14734 				zval retval;
14735 
14736 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
14737 				count = zval_get_long(&retval);
14738 				zval_ptr_dtor(&retval);
14739 				break;
14740 			}
14741 
14742 			/* If There's no handler and it doesn't implement Countable then add a warning */
14743 			count = 1;
14744 		} else if (Z_TYPE_P(op1) == IS_NULL) {
14745 			count = 0;
14746 		} else {
14747 			count = 1;
14748 		}
14749 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
14750 	} while (0);
14751 
14752 	ZVAL_LONG(EX_VAR(opline->result.var), count);
14753 	zval_ptr_dtor_nogc(free_op1);
14754 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14755 }
14756 
14757 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14758 {
14759 	USE_OPLINE
14760 
14761 	if (IS_TMP_VAR == IS_UNUSED) {
14762 		if (UNEXPECTED(!EX(func)->common.scope)) {
14763 			SAVE_OPLINE();
14764 			zend_error(E_WARNING, "get_class() called without object from outside a class");
14765 			ZVAL_FALSE(EX_VAR(opline->result.var));
14766 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14767 		} else {
14768 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
14769 			ZEND_VM_NEXT_OPCODE();
14770 		}
14771 	} else {
14772 		zend_free_op free_op1;
14773 		zval *op1;
14774 
14775 		SAVE_OPLINE();
14776 		op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14777 		if (Z_TYPE_P(op1) == IS_OBJECT) {
14778 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
14779 		} else {
14780 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
14781 			ZVAL_FALSE(EX_VAR(opline->result.var));
14782 		}
14783 		zval_ptr_dtor_nogc(free_op1);
14784 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14785 	}
14786 }
14787 
14788 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14789 {
14790 	USE_OPLINE
14791 	zend_free_op free_op1;
14792 	zval *op1;
14793 	zend_string *type;
14794 
14795 	SAVE_OPLINE();
14796 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14797 	type = zend_zval_get_type(op1);
14798 	if (EXPECTED(type)) {
14799 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
14800 	} else {
14801 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
14802 	}
14803 	zval_ptr_dtor_nogc(free_op1);
14804 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14805 }
14806 
14807 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14808 {
14809 	USE_OPLINE
14810 	zend_free_op free_op1;
14811 	zval *op1, *op2;
14812 	int result;
14813 
14814 	SAVE_OPLINE();
14815 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14816 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
14817 	result = fast_is_identical_function(op1, op2);
14818 	zval_ptr_dtor_nogc(free_op1);
14819 
14820 	ZEND_VM_SMART_BRANCH(result, 1);
14821 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14822 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14823 }
14824 
14825 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14826 {
14827 	USE_OPLINE
14828 	zend_free_op free_op1;
14829 	zval *op1, *op2;
14830 	int result;
14831 
14832 	SAVE_OPLINE();
14833 	op1 = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14834 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
14835 	result = fast_is_not_identical_function(op1, op2);
14836 	zval_ptr_dtor_nogc(free_op1);
14837 
14838 	ZEND_VM_SMART_BRANCH(result, 1);
14839 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
14840 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14841 }
14842 
14843 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14844 {
14845 	USE_OPLINE
14846 	zval *container;
14847 	zend_free_op free_op1;
14848 
14849 	SAVE_OPLINE();
14850 
14851 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
14852         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
14853             zend_throw_error(NULL, "Cannot use temporary expression in write context");
14854 
14855 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14856 			ZVAL_UNDEF(EX_VAR(opline->result.var));
14857 			HANDLE_EXCEPTION();
14858         }
14859 		container = NULL;
14860 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
14861 		if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
14862 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
14863 		}
14864 
14865 
14866 	} else {
14867 		if (IS_CV == IS_UNUSED) {
14868 			zend_throw_error(NULL, "Cannot use [] for reading");
14869 
14870 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
14871 			ZVAL_UNDEF(EX_VAR(opline->result.var));
14872 			HANDLE_EXCEPTION();
14873 		}
14874 		container = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14875 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
14876 
14877 		zval_ptr_dtor_nogc(free_op1);
14878 	}
14879 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14880 }
14881 
14882 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14883 {
14884 	USE_OPLINE
14885 	zend_free_op free_op1;
14886 	zval *container;
14887 
14888 	zval *offset;
14889 
14890 	SAVE_OPLINE();
14891 	container = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
14892 
14893 	if (IS_TMP_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
14894 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
14895 	}
14896 
14897 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
14898 
14899 	if (IS_TMP_VAR == IS_CONST ||
14900 	    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
14901 		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
14902 			container = Z_REFVAL_P(container);
14903 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
14904 				goto fetch_obj_r_no_object;
14905 			}
14906 		} else {
14907 			goto fetch_obj_r_no_object;
14908 		}
14909 	}
14910 
14911 	/* here we are sure we are dealing with an object */
14912 	do {
14913 		zend_object *zobj = Z_OBJ_P(container);
14914 		zval *retval;
14915 
14916 		if (IS_CV == IS_CONST &&
14917 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
14918 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
14919 
14920 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
14921 				retval = OBJ_PROP(zobj, prop_offset);
14922 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
14923 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
14924 					break;
14925 				}
14926 			} else if (EXPECTED(zobj->properties != NULL)) {
14927 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
14928 				if (EXPECTED(retval)) {
14929 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
14930 					break;
14931 				}
14932 			}
14933 		}
14934 
14935 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
14936 			zend_string *property_name;
14937 fetch_obj_r_no_object:
14938 			property_name = zval_get_string(offset);
14939 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
14940 			zend_string_release(property_name);
14941 			ZVAL_NULL(EX_VAR(opline->result.var));
14942 		} else {
14943 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
14944 
14945 			if (retval != EX_VAR(opline->result.var)) {
14946 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
14947 			}
14948 		}
14949 	} while (0);
14950 
14951 	zval_ptr_dtor_nogc(free_op1);
14952 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14953 }
14954 
14955 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14956 {
14957 	USE_OPLINE
14958 	zval *container;
14959 
14960 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
14961 		/* Behave like FETCH_OBJ_W */
14962 		zend_free_op free_op1;
14963 		zval *property;
14964 
14965 		SAVE_OPLINE();
14966 		container = NULL;
14967 
14968 		if (IS_TMP_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
14969 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
14970 		}
14971 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
14972 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
14973 
14974 
14975 			ZVAL_UNDEF(EX_VAR(opline->result.var));
14976 			HANDLE_EXCEPTION();
14977 		}
14978 		property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
14979 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
14980 
14981 		if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
14982 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
14983 		}
14984 
14985 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
14986 	} else {
14987 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
14988 	}
14989 }
14990 
14991 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
14992 {
14993 	USE_OPLINE
14994 
14995 	zend_string **rope;
14996 	zval *var;
14997 
14998 	/* op1 and result are the same */
14999 	rope = (zend_string**)EX_VAR(opline->op1.var);
15000 	if (IS_CV == IS_CONST) {
15001 		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
15002 		rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15003 	} else {
15004 		var = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
15005 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
15006 			if (IS_CV == IS_CV) {
15007 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15008 			} else {
15009 				rope[opline->extended_value] = Z_STR_P(var);
15010 			}
15011 		} else {
15012 			SAVE_OPLINE();
15013 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
15014 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
15015 			}
15016 			rope[opline->extended_value] = _zval_get_string_func(var);
15017 
15018 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15019 		}
15020 	}
15021 	ZEND_VM_NEXT_OPCODE();
15022 }
15023 
15024 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15025 {
15026 	USE_OPLINE
15027 
15028 	zend_string **rope;
15029 	zval *var, *ret;
15030 	uint32_t i;
15031 	size_t len = 0;
15032 	char *target;
15033 
15034 	rope = (zend_string**)EX_VAR(opline->op1.var);
15035 	if (IS_CV == IS_CONST) {
15036 		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
15037 		rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15038 	} else {
15039 		var = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
15040 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
15041 			if (IS_CV == IS_CV) {
15042 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15043 			} else {
15044 				rope[opline->extended_value] = Z_STR_P(var);
15045 			}
15046 		} else {
15047 			SAVE_OPLINE();
15048 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
15049 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
15050 			}
15051 			rope[opline->extended_value] = _zval_get_string_func(var);
15052 
15053 			if (UNEXPECTED(EG(exception))) {
15054 				for (i = 0; i <= opline->extended_value; i++) {
15055 					zend_string_release(rope[i]);
15056 				}
15057 				ZVAL_UNDEF(EX_VAR(opline->result.var));
15058 				HANDLE_EXCEPTION();
15059 			}
15060 		}
15061 	}
15062 	for (i = 0; i <= opline->extended_value; i++) {
15063 		len += ZSTR_LEN(rope[i]);
15064 	}
15065 	ret = EX_VAR(opline->result.var);
15066 	ZVAL_STR(ret, zend_string_alloc(len, 0));
15067 	target = Z_STRVAL_P(ret);
15068 	for (i = 0; i <= opline->extended_value; i++) {
15069 		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
15070 		target += ZSTR_LEN(rope[i]);
15071 		zend_string_release(rope[i]);
15072 	}
15073 	*target = '\0';
15074 
15075 	ZEND_VM_NEXT_OPCODE();
15076 }
15077 
15078 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15079 {
15080 	USE_OPLINE
15081 	zend_free_op free_op1;
15082 	zval *expr_ptr, new_expr;
15083 
15084 	SAVE_OPLINE();
15085 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
15086 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
15087 		expr_ptr = NULL;
15088 		ZVAL_MAKE_REF(expr_ptr);
15089 		Z_ADDREF_P(expr_ptr);
15090 
15091 	} else {
15092 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15093 		if (IS_TMP_VAR == IS_TMP_VAR) {
15094 			/* pass */
15095 		} else if (IS_TMP_VAR == IS_CONST) {
15096 			if (Z_REFCOUNTED_P(expr_ptr)) {
15097 				Z_ADDREF_P(expr_ptr);
15098 			}
15099 		} else if (IS_TMP_VAR == IS_CV) {
15100 			ZVAL_DEREF(expr_ptr);
15101 			if (Z_REFCOUNTED_P(expr_ptr)) {
15102 				Z_ADDREF_P(expr_ptr);
15103 			}
15104 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
15105 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
15106 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
15107 
15108 				expr_ptr = Z_REFVAL_P(expr_ptr);
15109 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
15110 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
15111 					expr_ptr = &new_expr;
15112 					efree_size(ref, sizeof(zend_reference));
15113 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
15114 					Z_ADDREF_P(expr_ptr);
15115 				}
15116 			}
15117 		}
15118 	}
15119 
15120 	if (IS_CV != IS_UNUSED) {
15121 
15122 		zval *offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
15123 		zend_string *str;
15124 		zend_ulong hval;
15125 
15126 add_again:
15127 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
15128 			str = Z_STR_P(offset);
15129 			if (IS_CV != IS_CONST) {
15130 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
15131 					goto num_index;
15132 				}
15133 			}
15134 str_index:
15135 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
15136 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
15137 			hval = Z_LVAL_P(offset);
15138 num_index:
15139 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
15140 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
15141 			offset = Z_REFVAL_P(offset);
15142 			goto add_again;
15143 		} else if (Z_TYPE_P(offset) == IS_NULL) {
15144 			str = ZSTR_EMPTY_ALLOC();
15145 			goto str_index;
15146 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
15147 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
15148 			goto num_index;
15149 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
15150 			hval = 0;
15151 			goto num_index;
15152 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
15153 			hval = 1;
15154 			goto num_index;
15155 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
15156 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
15157 			str = ZSTR_EMPTY_ALLOC();
15158 			goto str_index;
15159 		} else {
15160 			zend_error(E_WARNING, "Illegal offset type");
15161 			zval_ptr_dtor(expr_ptr);
15162 		}
15163 
15164 	} else {
15165 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
15166 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
15167 			zval_ptr_dtor(expr_ptr);
15168 		}
15169 	}
15170 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15171 }
15172 
15173 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15174 {
15175 	zval *array;
15176 	uint32_t size;
15177 	USE_OPLINE
15178 
15179 	array = EX_VAR(opline->result.var);
15180 	if (IS_TMP_VAR != IS_UNUSED) {
15181 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
15182 	} else {
15183 		size = 0;
15184 	}
15185 	ZVAL_NEW_ARR(array);
15186 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
15187 
15188 	if (IS_TMP_VAR != IS_UNUSED) {
15189 		/* Explicitly initialize array as not-packed if flag is set */
15190 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
15191 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
15192 		}
15193 	}
15194 
15195 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15196 }
15197 
15198 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15199 {
15200 	USE_OPLINE
15201 
15202 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
15203 
15204 	SAVE_OPLINE();
15205 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
15206 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
15207 
15208 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15209 		UNDEF_RESULT();
15210 		HANDLE_EXCEPTION();
15211 	}
15212 
15213 	/* Destroy the previously yielded value */
15214 	zval_ptr_dtor(&generator->value);
15215 
15216 	/* Destroy the previously yielded key */
15217 	zval_ptr_dtor(&generator->key);
15218 
15219 	/* Set the new yielded value */
15220 	if (IS_TMP_VAR != IS_UNUSED) {
15221 		zend_free_op free_op1;
15222 
15223 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
15224 			/* Constants and temporary variables aren't yieldable by reference,
15225 			 * but we still allow them with a notice. */
15226 			if (IS_TMP_VAR & (IS_CONST|IS_TMP_VAR)) {
15227 				zval *value;
15228 
15229 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
15230 
15231 				value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15232 				ZVAL_COPY_VALUE(&generator->value, value);
15233 				if (IS_TMP_VAR == IS_CONST) {
15234 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
15235 						Z_ADDREF(generator->value);
15236 					}
15237 				}
15238 			} else {
15239 				zval *value_ptr = NULL;
15240 
15241 				/* If a function call result is yielded and the function did
15242 				 * not return by reference we throw a notice. */
15243 				if (IS_TMP_VAR == IS_VAR &&
15244 				    (value_ptr == &EG(uninitialized_zval) ||
15245 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
15246 				      !Z_ISREF_P(value_ptr)))) {
15247 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
15248 				} else {
15249 					ZVAL_MAKE_REF(value_ptr);
15250 				}
15251 				ZVAL_COPY(&generator->value, value_ptr);
15252 
15253 			}
15254 		} else {
15255 			zval *value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15256 
15257 			/* Consts, temporary variables and references need copying */
15258 			if (IS_TMP_VAR == IS_CONST) {
15259 				ZVAL_COPY_VALUE(&generator->value, value);
15260 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
15261 					Z_ADDREF(generator->value);
15262 				}
15263 			} else if (IS_TMP_VAR == IS_TMP_VAR) {
15264 				ZVAL_COPY_VALUE(&generator->value, value);
15265             } else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
15266 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
15267 
15268 			} else {
15269 				ZVAL_COPY_VALUE(&generator->value, value);
15270 				if (IS_TMP_VAR == IS_CV) {
15271 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
15272 				}
15273 			}
15274 		}
15275 	} else {
15276 		/* If no value was specified yield null */
15277 		ZVAL_NULL(&generator->value);
15278 	}
15279 
15280 	/* Set the new yielded key */
15281 	if (IS_CV != IS_UNUSED) {
15282 
15283 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
15284 
15285 		/* Consts, temporary variables and references need copying */
15286 		if (IS_CV == IS_CONST) {
15287 			ZVAL_COPY_VALUE(&generator->key, key);
15288 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
15289 				Z_ADDREF(generator->key);
15290 			}
15291 		} else if (IS_CV == IS_TMP_VAR) {
15292 			ZVAL_COPY_VALUE(&generator->key, key);
15293 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
15294 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
15295 
15296 		} else {
15297 			ZVAL_COPY_VALUE(&generator->key, key);
15298 			if (IS_CV == IS_CV) {
15299 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
15300 			}
15301 		}
15302 
15303 		if (Z_TYPE(generator->key) == IS_LONG
15304 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
15305 		) {
15306 			generator->largest_used_integer_key = Z_LVAL(generator->key);
15307 		}
15308 	} else {
15309 		/* If no key was specified we use auto-increment keys */
15310 		generator->largest_used_integer_key++;
15311 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
15312 	}
15313 
15314 	if (RETURN_VALUE_USED(opline)) {
15315 		/* If the return value of yield is used set the send
15316 		 * target and initialize it to NULL */
15317 		generator->send_target = EX_VAR(opline->result.var);
15318 		ZVAL_NULL(generator->send_target);
15319 	} else {
15320 		generator->send_target = NULL;
15321 	}
15322 
15323 	/* We increment to the next op, so we are at the correct position when the
15324 	 * generator is resumed. */
15325 	ZEND_VM_INC_OPCODE();
15326 
15327 	/* The GOTO VM uses a local opline variable. We need to set the opline
15328 	 * variable in execute_data so we don't resume at an old position. */
15329 	SAVE_OPLINE();
15330 
15331 	ZEND_VM_RETURN();
15332 }
15333 
15334 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15335 {
15336 	USE_OPLINE
15337 	zend_free_op free_op1;
15338 	zval *closure, *var;
15339 	zend_string *var_name;
15340 
15341 	closure = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15342 	if (opline->extended_value) {
15343 		/* By-ref binding */
15344 		var = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
15345 		ZVAL_MAKE_REF(var);
15346 		Z_ADDREF_P(var);
15347 	} else {
15348 		var = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
15349 		if (UNEXPECTED(Z_ISUNDEF_P(var))) {
15350 			SAVE_OPLINE();
15351 			var = GET_OP2_UNDEF_CV(var, BP_VAR_R);
15352 			if (UNEXPECTED(EG(exception))) {
15353 				HANDLE_EXCEPTION();
15354 			}
15355 		}
15356 		ZVAL_DEREF(var);
15357 		Z_TRY_ADDREF_P(var);
15358 	}
15359 
15360 	var_name = CV_DEF_OF(EX_VAR_TO_NUM(opline->op2.var));
15361 	zend_closure_bind_var(closure, var_name, var);
15362 	ZEND_VM_NEXT_OPCODE();
15363 }
15364 
15365 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15366 {
15367 	USE_OPLINE
15368 	zval *container;
15369 	zend_free_op free_op1, free_op2;
15370 
15371 	SAVE_OPLINE();
15372 
15373 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
15374         if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
15375             zend_throw_error(NULL, "Cannot use temporary expression in write context");
15376 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
15377 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15378 			ZVAL_UNDEF(EX_VAR(opline->result.var));
15379 			HANDLE_EXCEPTION();
15380         }
15381 		container = NULL;
15382 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
15383 		if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
15384 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
15385 		}
15386 		zval_ptr_dtor_nogc(free_op2);
15387 
15388 	} else {
15389 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
15390 			zend_throw_error(NULL, "Cannot use [] for reading");
15391 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
15392 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
15393 			ZVAL_UNDEF(EX_VAR(opline->result.var));
15394 			HANDLE_EXCEPTION();
15395 		}
15396 		container = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15397 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
15398 		zval_ptr_dtor_nogc(free_op2);
15399 		zval_ptr_dtor_nogc(free_op1);
15400 	}
15401 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15402 }
15403 
15404 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15405 {
15406 	USE_OPLINE
15407 	zend_free_op free_op1;
15408 	zval *container;
15409 	zend_free_op free_op2;
15410 	zval *offset;
15411 
15412 	SAVE_OPLINE();
15413 	container = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15414 
15415 	if (IS_TMP_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
15416 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15417 	}
15418 
15419 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15420 
15421 	if (IS_TMP_VAR == IS_CONST ||
15422 	    (IS_TMP_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
15423 		if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
15424 			container = Z_REFVAL_P(container);
15425 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
15426 				goto fetch_obj_r_no_object;
15427 			}
15428 		} else {
15429 			goto fetch_obj_r_no_object;
15430 		}
15431 	}
15432 
15433 	/* here we are sure we are dealing with an object */
15434 	do {
15435 		zend_object *zobj = Z_OBJ_P(container);
15436 		zval *retval;
15437 
15438 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
15439 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
15440 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
15441 
15442 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
15443 				retval = OBJ_PROP(zobj, prop_offset);
15444 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
15445 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
15446 					break;
15447 				}
15448 			} else if (EXPECTED(zobj->properties != NULL)) {
15449 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
15450 				if (EXPECTED(retval)) {
15451 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
15452 					break;
15453 				}
15454 			}
15455 		}
15456 
15457 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
15458 			zend_string *property_name;
15459 fetch_obj_r_no_object:
15460 			property_name = zval_get_string(offset);
15461 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
15462 			zend_string_release(property_name);
15463 			ZVAL_NULL(EX_VAR(opline->result.var));
15464 		} else {
15465 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
15466 
15467 			if (retval != EX_VAR(opline->result.var)) {
15468 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
15469 			}
15470 		}
15471 	} while (0);
15472 
15473 	zval_ptr_dtor_nogc(free_op2);
15474 	zval_ptr_dtor_nogc(free_op1);
15475 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15476 }
15477 
15478 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15479 {
15480 	USE_OPLINE
15481 	zval *container;
15482 
15483 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
15484 		/* Behave like FETCH_OBJ_W */
15485 		zend_free_op free_op1, free_op2;
15486 		zval *property;
15487 
15488 		SAVE_OPLINE();
15489 		container = NULL;
15490 
15491 		if (IS_TMP_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
15492 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15493 		}
15494 		if ((IS_TMP_VAR & (IS_CONST|IS_TMP_VAR))) {
15495 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
15496 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
15497 
15498 			ZVAL_UNDEF(EX_VAR(opline->result.var));
15499 			HANDLE_EXCEPTION();
15500 		}
15501 		property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15502 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_TMP_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
15503 		zval_ptr_dtor_nogc(free_op2);
15504 		if (IS_TMP_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
15505 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
15506 		}
15507 
15508 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15509 	} else {
15510 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15511 	}
15512 }
15513 
15514 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15515 {
15516 	USE_OPLINE
15517 	zend_free_op free_op2;
15518 	zend_string **rope;
15519 	zval *var;
15520 
15521 	/* op1 and result are the same */
15522 	rope = (zend_string**)EX_VAR(opline->op1.var);
15523 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15524 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15525 		rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15526 	} else {
15527 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15528 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
15529 			if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
15530 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15531 			} else {
15532 				rope[opline->extended_value] = Z_STR_P(var);
15533 			}
15534 		} else {
15535 			SAVE_OPLINE();
15536 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
15537 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
15538 			}
15539 			rope[opline->extended_value] = _zval_get_string_func(var);
15540 			zval_ptr_dtor_nogc(free_op2);
15541 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15542 		}
15543 	}
15544 	ZEND_VM_NEXT_OPCODE();
15545 }
15546 
15547 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15548 {
15549 	USE_OPLINE
15550 	zend_free_op free_op2;
15551 	zend_string **rope;
15552 	zval *var, *ret;
15553 	uint32_t i;
15554 	size_t len = 0;
15555 	char *target;
15556 
15557 	rope = (zend_string**)EX_VAR(opline->op1.var);
15558 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
15559 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15560 		rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15561 	} else {
15562 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15563 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
15564 			if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
15565 				rope[opline->extended_value] = zend_string_copy(Z_STR_P(var));
15566 			} else {
15567 				rope[opline->extended_value] = Z_STR_P(var);
15568 			}
15569 		} else {
15570 			SAVE_OPLINE();
15571 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
15572 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
15573 			}
15574 			rope[opline->extended_value] = _zval_get_string_func(var);
15575 			zval_ptr_dtor_nogc(free_op2);
15576 			if (UNEXPECTED(EG(exception))) {
15577 				for (i = 0; i <= opline->extended_value; i++) {
15578 					zend_string_release(rope[i]);
15579 				}
15580 				ZVAL_UNDEF(EX_VAR(opline->result.var));
15581 				HANDLE_EXCEPTION();
15582 			}
15583 		}
15584 	}
15585 	for (i = 0; i <= opline->extended_value; i++) {
15586 		len += ZSTR_LEN(rope[i]);
15587 	}
15588 	ret = EX_VAR(opline->result.var);
15589 	ZVAL_STR(ret, zend_string_alloc(len, 0));
15590 	target = Z_STRVAL_P(ret);
15591 	for (i = 0; i <= opline->extended_value; i++) {
15592 		memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i]));
15593 		target += ZSTR_LEN(rope[i]);
15594 		zend_string_release(rope[i]);
15595 	}
15596 	*target = '\0';
15597 
15598 	ZEND_VM_NEXT_OPCODE();
15599 }
15600 
15601 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15602 {
15603 	USE_OPLINE
15604 	zend_free_op free_op1;
15605 	zval *expr_ptr, new_expr;
15606 
15607 	SAVE_OPLINE();
15608 	if ((IS_TMP_VAR == IS_VAR || IS_TMP_VAR == IS_CV) &&
15609 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
15610 		expr_ptr = NULL;
15611 		ZVAL_MAKE_REF(expr_ptr);
15612 		Z_ADDREF_P(expr_ptr);
15613 
15614 	} else {
15615 		expr_ptr = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15616 		if (IS_TMP_VAR == IS_TMP_VAR) {
15617 			/* pass */
15618 		} else if (IS_TMP_VAR == IS_CONST) {
15619 			if (Z_REFCOUNTED_P(expr_ptr)) {
15620 				Z_ADDREF_P(expr_ptr);
15621 			}
15622 		} else if (IS_TMP_VAR == IS_CV) {
15623 			ZVAL_DEREF(expr_ptr);
15624 			if (Z_REFCOUNTED_P(expr_ptr)) {
15625 				Z_ADDREF_P(expr_ptr);
15626 			}
15627 		} else /* if (IS_TMP_VAR == IS_VAR) */ {
15628 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
15629 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
15630 
15631 				expr_ptr = Z_REFVAL_P(expr_ptr);
15632 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
15633 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
15634 					expr_ptr = &new_expr;
15635 					efree_size(ref, sizeof(zend_reference));
15636 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
15637 					Z_ADDREF_P(expr_ptr);
15638 				}
15639 			}
15640 		}
15641 	}
15642 
15643 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
15644 		zend_free_op free_op2;
15645 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
15646 		zend_string *str;
15647 		zend_ulong hval;
15648 
15649 add_again:
15650 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
15651 			str = Z_STR_P(offset);
15652 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
15653 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
15654 					goto num_index;
15655 				}
15656 			}
15657 str_index:
15658 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
15659 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
15660 			hval = Z_LVAL_P(offset);
15661 num_index:
15662 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
15663 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
15664 			offset = Z_REFVAL_P(offset);
15665 			goto add_again;
15666 		} else if (Z_TYPE_P(offset) == IS_NULL) {
15667 			str = ZSTR_EMPTY_ALLOC();
15668 			goto str_index;
15669 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
15670 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
15671 			goto num_index;
15672 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
15673 			hval = 0;
15674 			goto num_index;
15675 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
15676 			hval = 1;
15677 			goto num_index;
15678 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
15679 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
15680 			str = ZSTR_EMPTY_ALLOC();
15681 			goto str_index;
15682 		} else {
15683 			zend_error(E_WARNING, "Illegal offset type");
15684 			zval_ptr_dtor(expr_ptr);
15685 		}
15686 		zval_ptr_dtor_nogc(free_op2);
15687 	} else {
15688 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
15689 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
15690 			zval_ptr_dtor(expr_ptr);
15691 		}
15692 	}
15693 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15694 }
15695 
15696 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15697 {
15698 	zval *array;
15699 	uint32_t size;
15700 	USE_OPLINE
15701 
15702 	array = EX_VAR(opline->result.var);
15703 	if (IS_TMP_VAR != IS_UNUSED) {
15704 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
15705 	} else {
15706 		size = 0;
15707 	}
15708 	ZVAL_NEW_ARR(array);
15709 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
15710 
15711 	if (IS_TMP_VAR != IS_UNUSED) {
15712 		/* Explicitly initialize array as not-packed if flag is set */
15713 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
15714 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
15715 		}
15716 	}
15717 
15718 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
15719 }
15720 
15721 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15722 {
15723 	USE_OPLINE
15724 	zend_free_op free_op1;
15725 	zval *var_ptr;
15726 
15727 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15728 
15729 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
15730 		fast_long_increment_function(var_ptr);
15731 		if (UNEXPECTED(0)) {
15732 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15733 		}
15734 		ZEND_VM_NEXT_OPCODE();
15735 	}
15736 
15737 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
15738 		if (UNEXPECTED(0)) {
15739 			ZVAL_NULL(EX_VAR(opline->result.var));
15740 		}
15741 		ZEND_VM_NEXT_OPCODE();
15742 	}
15743 
15744 	SAVE_OPLINE();
15745 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
15746 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
15747 	}
15748 	ZVAL_DEREF(var_ptr);
15749 	SEPARATE_ZVAL_NOREF(var_ptr);
15750 
15751 	increment_function(var_ptr);
15752 
15753 	if (UNEXPECTED(0)) {
15754 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
15755 	}
15756 
15757 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
15758 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15759 }
15760 
15761 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15762 {
15763 	USE_OPLINE
15764 	zend_free_op free_op1;
15765 	zval *var_ptr;
15766 
15767 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15768 
15769 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
15770 		fast_long_increment_function(var_ptr);
15771 		if (UNEXPECTED(1)) {
15772 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15773 		}
15774 		ZEND_VM_NEXT_OPCODE();
15775 	}
15776 
15777 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
15778 		if (UNEXPECTED(1)) {
15779 			ZVAL_NULL(EX_VAR(opline->result.var));
15780 		}
15781 		ZEND_VM_NEXT_OPCODE();
15782 	}
15783 
15784 	SAVE_OPLINE();
15785 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
15786 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
15787 	}
15788 	ZVAL_DEREF(var_ptr);
15789 	SEPARATE_ZVAL_NOREF(var_ptr);
15790 
15791 	increment_function(var_ptr);
15792 
15793 	if (UNEXPECTED(1)) {
15794 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
15795 	}
15796 
15797 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
15798 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15799 }
15800 
15801 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15802 {
15803 	USE_OPLINE
15804 	zend_free_op free_op1;
15805 	zval *var_ptr;
15806 
15807 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15808 
15809 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
15810 		fast_long_decrement_function(var_ptr);
15811 		if (UNEXPECTED(0)) {
15812 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15813 		}
15814 		ZEND_VM_NEXT_OPCODE();
15815 	}
15816 
15817 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
15818 		if (UNEXPECTED(0)) {
15819 			ZVAL_NULL(EX_VAR(opline->result.var));
15820 		}
15821 		ZEND_VM_NEXT_OPCODE();
15822 	}
15823 
15824 	SAVE_OPLINE();
15825 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
15826 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
15827 	}
15828 	ZVAL_DEREF(var_ptr);
15829 	SEPARATE_ZVAL_NOREF(var_ptr);
15830 
15831 	decrement_function(var_ptr);
15832 
15833 	if (UNEXPECTED(0)) {
15834 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
15835 	}
15836 
15837 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
15838 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15839 }
15840 
15841 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15842 {
15843 	USE_OPLINE
15844 	zend_free_op free_op1;
15845 	zval *var_ptr;
15846 
15847 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15848 
15849 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
15850 		fast_long_decrement_function(var_ptr);
15851 		if (UNEXPECTED(1)) {
15852 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15853 		}
15854 		ZEND_VM_NEXT_OPCODE();
15855 	}
15856 
15857 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
15858 		if (UNEXPECTED(1)) {
15859 			ZVAL_NULL(EX_VAR(opline->result.var));
15860 		}
15861 		ZEND_VM_NEXT_OPCODE();
15862 	}
15863 
15864 	SAVE_OPLINE();
15865 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
15866 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
15867 	}
15868 	ZVAL_DEREF(var_ptr);
15869 	SEPARATE_ZVAL_NOREF(var_ptr);
15870 
15871 	decrement_function(var_ptr);
15872 
15873 	if (UNEXPECTED(1)) {
15874 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
15875 	}
15876 
15877 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
15878 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15879 }
15880 
15881 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15882 {
15883 	USE_OPLINE
15884 	zend_free_op free_op1;
15885 	zval *var_ptr;
15886 
15887 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15888 
15889 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
15890 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15891 		fast_long_increment_function(var_ptr);
15892 		ZEND_VM_NEXT_OPCODE();
15893 	}
15894 
15895 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
15896 		ZVAL_NULL(EX_VAR(opline->result.var));
15897 		ZEND_VM_NEXT_OPCODE();
15898 	}
15899 
15900 	SAVE_OPLINE();
15901 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
15902 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
15903 	}
15904 	ZVAL_DEREF(var_ptr);
15905 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15906 	zval_opt_copy_ctor(var_ptr);
15907 
15908 	increment_function(var_ptr);
15909 
15910 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
15911 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15912 }
15913 
15914 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15915 {
15916 	USE_OPLINE
15917 	zend_free_op free_op1;
15918 	zval *var_ptr;
15919 
15920 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15921 
15922 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
15923 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15924 		fast_long_decrement_function(var_ptr);
15925 		ZEND_VM_NEXT_OPCODE();
15926 	}
15927 
15928 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
15929 		ZVAL_NULL(EX_VAR(opline->result.var));
15930 		ZEND_VM_NEXT_OPCODE();
15931 	}
15932 
15933 	SAVE_OPLINE();
15934 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
15935 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
15936 	}
15937 	ZVAL_DEREF(var_ptr);
15938 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
15939 	zval_opt_copy_ctor(var_ptr);
15940 
15941 	decrement_function(var_ptr);
15942 
15943 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
15944 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
15945 }
15946 
15947 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
15948 {
15949 	USE_OPLINE
15950 	zval *retval_ptr;
15951 	zval *return_value;
15952 	zend_free_op free_op1;
15953 
15954 	retval_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
15955 	return_value = EX(return_value);
15956 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
15957 		SAVE_OPLINE();
15958 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
15959 		if (return_value) {
15960 			ZVAL_NULL(return_value);
15961 		}
15962 	} else if (!return_value) {
15963 		if (IS_VAR & (IS_VAR|IS_TMP_VAR)) {
15964 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
15965 				SAVE_OPLINE();
15966 				zval_dtor_func(Z_COUNTED_P(free_op1));
15967 			}
15968 		}
15969 	} else {
15970 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
15971 			ZVAL_COPY_VALUE(return_value, retval_ptr);
15972 			if (IS_VAR == IS_CONST) {
15973 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
15974 					Z_ADDREF_P(return_value);
15975 				}
15976 			}
15977 		} else if (IS_VAR == IS_CV) {
15978 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
15979 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
15980 					ZVAL_COPY_VALUE(return_value, retval_ptr);
15981 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
15982 						ZVAL_NULL(retval_ptr);
15983 					} else {
15984 						Z_ADDREF_P(return_value);
15985 					}
15986 				} else {
15987 					retval_ptr = Z_REFVAL_P(retval_ptr);
15988 					ZVAL_COPY(return_value, retval_ptr);
15989 				}
15990 			} else {
15991 				ZVAL_COPY_VALUE(return_value, retval_ptr);
15992 			}
15993 		} else /* if (IS_VAR == IS_VAR) */ {
15994 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
15995 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
15996 
15997 				retval_ptr = Z_REFVAL_P(retval_ptr);
15998 				ZVAL_COPY_VALUE(return_value, retval_ptr);
15999 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
16000 					efree_size(ref, sizeof(zend_reference));
16001 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
16002 					Z_ADDREF_P(retval_ptr);
16003 				}
16004 			} else {
16005 				ZVAL_COPY_VALUE(return_value, retval_ptr);
16006 			}
16007 		}
16008 	}
16009 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16010 }
16011 
16012 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16013 {
16014 	USE_OPLINE
16015 	zval *retval_ptr;
16016 	zend_free_op free_op1;
16017 
16018 	SAVE_OPLINE();
16019 
16020 	do {
16021 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR)) ||
16022 		    (IS_VAR == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
16023 			/* Not supposed to happen, but we'll allow it */
16024 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
16025 
16026 			retval_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16027 			if (!EX(return_value)) {
16028 				zval_ptr_dtor_nogc(free_op1);
16029 			} else {
16030 				if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
16031 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
16032 					break;
16033 				}
16034 
16035 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
16036 				if (IS_VAR == IS_CONST) {
16037 					if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
16038 				}
16039 			}
16040 			break;
16041 		}
16042 
16043 		retval_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16044 
16045 		if (IS_VAR == IS_VAR) {
16046 			if (retval_ptr == &EG(uninitialized_zval) ||
16047 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
16048 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
16049 				if (EX(return_value)) {
16050 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
16051 				} else {
16052 					if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16053 				}
16054 				break;
16055 			}
16056 		}
16057 
16058 		if (EX(return_value)) {
16059 			ZVAL_MAKE_REF(retval_ptr);
16060 			Z_ADDREF_P(retval_ptr);
16061 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
16062 		}
16063 
16064 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16065 	} while (0);
16066 
16067 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16068 }
16069 
16070 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16071 {
16072 	USE_OPLINE
16073 	zval *retval;
16074 	zend_free_op free_op1;
16075 
16076 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
16077 
16078 	SAVE_OPLINE();
16079 	retval = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16080 
16081 	/* Copy return value into generator->retval */
16082 	if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
16083 		ZVAL_COPY_VALUE(&generator->retval, retval);
16084 		if (IS_VAR == IS_CONST) {
16085 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
16086 				Z_ADDREF(generator->retval);
16087 			}
16088 		}
16089 	} else if (IS_VAR == IS_CV) {
16090 		ZVAL_DEREF(retval);
16091 		ZVAL_COPY(&generator->retval, retval);
16092 	} else /* if (IS_VAR == IS_VAR) */ {
16093 		if (UNEXPECTED(Z_ISREF_P(retval))) {
16094 			zend_refcounted *ref = Z_COUNTED_P(retval);
16095 
16096 			retval = Z_REFVAL_P(retval);
16097 			ZVAL_COPY_VALUE(&generator->retval, retval);
16098 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
16099 				efree_size(ref, sizeof(zend_reference));
16100 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
16101 				Z_ADDREF_P(retval);
16102 			}
16103 		} else {
16104 			ZVAL_COPY_VALUE(&generator->retval, retval);
16105 		}
16106 	}
16107 
16108 	/* Close the generator to free up resources */
16109 	zend_generator_close(generator, 1);
16110 
16111 	/* Pass execution back to handling code */
16112 	ZEND_VM_RETURN();
16113 }
16114 
16115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16116 {
16117 	USE_OPLINE
16118 	zval *value;
16119 	zend_free_op free_op1;
16120 
16121 	SAVE_OPLINE();
16122 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16123 
16124 	do {
16125 		if (IS_VAR == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
16126 			if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
16127 				value = Z_REFVAL_P(value);
16128 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
16129 					break;
16130 				}
16131 			}
16132 			if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
16133 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
16134 				if (UNEXPECTED(EG(exception) != NULL)) {
16135 					HANDLE_EXCEPTION();
16136 				}
16137 			}
16138 			zend_throw_error(NULL, "Can only throw objects");
16139 			zval_ptr_dtor_nogc(free_op1);
16140 			HANDLE_EXCEPTION();
16141 		}
16142 	} while (0);
16143 
16144 	zend_exception_save();
16145 	if (IS_VAR != IS_TMP_VAR) {
16146 		if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
16147 	}
16148 
16149 	zend_throw_exception_object(value);
16150 	zend_exception_restore();
16151 	zval_ptr_dtor_nogc(free_op1);
16152 	HANDLE_EXCEPTION();
16153 }
16154 
16155 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16156 {
16157 	USE_OPLINE
16158 	zval *varptr, *arg;
16159 	zend_free_op free_op1;
16160 
16161 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16162 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
16163 		SAVE_OPLINE();
16164 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
16165 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16166 		ZVAL_NULL(arg);
16167 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16168 	}
16169 
16170 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16171 
16172 	if (IS_VAR == IS_CV) {
16173 		ZVAL_OPT_DEREF(varptr);
16174 		ZVAL_COPY(arg, varptr);
16175 	} else /* if (IS_VAR == IS_VAR) */ {
16176 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
16177 			zend_refcounted *ref = Z_COUNTED_P(varptr);
16178 
16179 			varptr = Z_REFVAL_P(varptr);
16180 			ZVAL_COPY_VALUE(arg, varptr);
16181 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
16182 				efree_size(ref, sizeof(zend_reference));
16183 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
16184 				Z_ADDREF_P(arg);
16185 			}
16186 		} else {
16187 			ZVAL_COPY_VALUE(arg, varptr);
16188 		}
16189 	}
16190 
16191 	ZEND_VM_NEXT_OPCODE();
16192 }
16193 
16194 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16195 {
16196 	USE_OPLINE
16197 	zend_free_op free_op1;
16198 	zval *varptr, *arg;
16199 
16200 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16201 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16202 	ZVAL_COPY_VALUE(arg, varptr);
16203 
16204 	if (EXPECTED(Z_ISREF_P(varptr))) {
16205 		ZEND_VM_NEXT_OPCODE();
16206 	}
16207 
16208 	SAVE_OPLINE();
16209 	zend_error(E_NOTICE, "Only variables should be passed by reference");
16210 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16211 }
16212 
16213 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16214 {
16215 	USE_OPLINE
16216 	zend_free_op free_op1;
16217 	zval *varptr, *arg;
16218 	uint32_t arg_num = opline->op2.num;
16219 
16220 	if (EXPECTED(0)) {
16221 		if (!QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16222 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16223 		}
16224 
16225 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16226 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16227 		ZVAL_COPY_VALUE(arg, varptr);
16228 
16229 		if (EXPECTED(Z_ISREF_P(varptr) ||
16230 		    QUICK_ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
16231 			ZEND_VM_NEXT_OPCODE();
16232 		}
16233 	} else {
16234 		if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16235 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16236 		}
16237 
16238 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16239 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16240 		ZVAL_COPY_VALUE(arg, varptr);
16241 
16242 		if (EXPECTED(Z_ISREF_P(varptr) ||
16243 		    ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
16244 			ZEND_VM_NEXT_OPCODE();
16245 		}
16246 	}
16247 
16248 	SAVE_OPLINE();
16249 	zend_error(E_NOTICE, "Only variables should be passed by reference");
16250 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16251 }
16252 
16253 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16254 {
16255 	USE_OPLINE
16256 	zend_free_op free_op1;
16257 	zval *varptr, *arg;
16258 	uint32_t arg_num = opline->op2.num;
16259 
16260 	if (EXPECTED(1)) {
16261 		if (!QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16262 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16263 		}
16264 
16265 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16266 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16267 		ZVAL_COPY_VALUE(arg, varptr);
16268 
16269 		if (EXPECTED(Z_ISREF_P(varptr) ||
16270 		    QUICK_ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
16271 			ZEND_VM_NEXT_OPCODE();
16272 		}
16273 	} else {
16274 		if (!ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16275 			ZEND_VM_TAIL_CALL(ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16276 		}
16277 
16278 		varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16279 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16280 		ZVAL_COPY_VALUE(arg, varptr);
16281 
16282 		if (EXPECTED(Z_ISREF_P(varptr) ||
16283 		    ARG_MAY_BE_SENT_BY_REF(EX(call)->func, arg_num))) {
16284 			ZEND_VM_NEXT_OPCODE();
16285 		}
16286 	}
16287 
16288 	SAVE_OPLINE();
16289 	zend_error(E_NOTICE, "Only variables should be passed by reference");
16290 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16291 }
16292 
16293 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16294 {
16295 	USE_OPLINE
16296 	zend_free_op free_op1;
16297 	zval *varptr, *arg;
16298 
16299 	SAVE_OPLINE();
16300 	varptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16301 
16302 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16303 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(varptr))) {
16304 		ZVAL_NEW_EMPTY_REF(arg);
16305 		ZVAL_NULL(Z_REFVAL_P(arg));
16306 		ZEND_VM_NEXT_OPCODE();
16307 	}
16308 
16309 	if (Z_ISREF_P(varptr)) {
16310 		Z_ADDREF_P(varptr);
16311 		ZVAL_COPY_VALUE(arg, varptr);
16312 	} else {
16313 		ZVAL_NEW_REF(arg, varptr);
16314 		Z_ADDREF_P(arg);
16315 		ZVAL_REF(varptr, Z_REF_P(arg));
16316 	}
16317 
16318 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16319 	ZEND_VM_NEXT_OPCODE();
16320 }
16321 
16322 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16323 {
16324 	USE_OPLINE
16325 	zval *varptr, *arg;
16326 	zend_free_op free_op1;
16327 	uint32_t arg_num = opline->op2.num;
16328 
16329 	if (EXPECTED(0)) {
16330 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16331 			goto send_var_by_ref;
16332 		}
16333 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16334 send_var_by_ref:
16335 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16336 	}
16337 
16338 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16339 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
16340 		SAVE_OPLINE();
16341 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
16342 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16343 		ZVAL_NULL(arg);
16344 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16345 	}
16346 
16347 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16348 
16349 	if (IS_VAR == IS_CV) {
16350 		ZVAL_OPT_DEREF(varptr);
16351 		ZVAL_COPY(arg, varptr);
16352 	} else /* if (IS_VAR == IS_VAR) */ {
16353 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
16354 			zend_refcounted *ref = Z_COUNTED_P(varptr);
16355 
16356 			varptr = Z_REFVAL_P(varptr);
16357 			ZVAL_COPY_VALUE(arg, varptr);
16358 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
16359 				efree_size(ref, sizeof(zend_reference));
16360 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
16361 				Z_ADDREF_P(arg);
16362 			}
16363 		} else {
16364 			ZVAL_COPY_VALUE(arg, varptr);
16365 		}
16366 	}
16367 
16368 	ZEND_VM_NEXT_OPCODE();
16369 }
16370 
16371 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16372 {
16373 	USE_OPLINE
16374 	zval *varptr, *arg;
16375 	zend_free_op free_op1;
16376 	uint32_t arg_num = opline->op2.num;
16377 
16378 	if (EXPECTED(1)) {
16379 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16380 			goto send_var_by_ref;
16381 		}
16382 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
16383 send_var_by_ref:
16384 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
16385 	}
16386 
16387 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16388 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
16389 		SAVE_OPLINE();
16390 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
16391 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16392 		ZVAL_NULL(arg);
16393 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16394 	}
16395 
16396 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
16397 
16398 	if (IS_VAR == IS_CV) {
16399 		ZVAL_OPT_DEREF(varptr);
16400 		ZVAL_COPY(arg, varptr);
16401 	} else /* if (IS_VAR == IS_VAR) */ {
16402 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
16403 			zend_refcounted *ref = Z_COUNTED_P(varptr);
16404 
16405 			varptr = Z_REFVAL_P(varptr);
16406 			ZVAL_COPY_VALUE(arg, varptr);
16407 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
16408 				efree_size(ref, sizeof(zend_reference));
16409 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
16410 				Z_ADDREF_P(arg);
16411 			}
16412 		} else {
16413 			ZVAL_COPY_VALUE(arg, varptr);
16414 		}
16415 	}
16416 
16417 	ZEND_VM_NEXT_OPCODE();
16418 }
16419 
16420 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16421 {
16422 	USE_OPLINE
16423 	zval *arg, *param;
16424 	zend_free_op free_op1;
16425 
16426 	SAVE_OPLINE();
16427 	arg = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16428 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
16429 
16430 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
16431 		zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
16432 			opline->op2.num,
16433 			EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
16434 			EX(call)->func->common.scope ? "::" : "",
16435 			ZSTR_VAL(EX(call)->func->common.function_name));
16436 	}
16437 
16438 	ZVAL_COPY(param, arg);
16439 
16440 	zval_ptr_dtor_nogc(free_op1);
16441 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16442 }
16443 
16444 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NEW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16445 {
16446 	USE_OPLINE
16447 	zval *result;
16448 	zend_function *constructor;
16449 	zend_class_entry *ce;
16450 	zend_execute_data *call;
16451 
16452 	SAVE_OPLINE();
16453 	if (IS_VAR == IS_CONST) {
16454 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
16455 		if (UNEXPECTED(ce == NULL)) {
16456 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
16457 			if (UNEXPECTED(ce == NULL)) {
16458 				ZEND_ASSERT(EG(exception));
16459 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16460 				HANDLE_EXCEPTION();
16461 			}
16462 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
16463 		}
16464 	} else if (IS_VAR == IS_UNUSED) {
16465 		ce = zend_fetch_class(NULL, opline->op1.num);
16466 		if (UNEXPECTED(ce == NULL)) {
16467 			ZEND_ASSERT(EG(exception));
16468 			ZVAL_UNDEF(EX_VAR(opline->result.var));
16469 			HANDLE_EXCEPTION();
16470 		}
16471 	} else {
16472 		ce = Z_CE_P(EX_VAR(opline->op1.var));
16473 	}
16474 
16475 	result = EX_VAR(opline->result.var);
16476 	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
16477 		ZVAL_UNDEF(result);
16478 		HANDLE_EXCEPTION();
16479 	}
16480 
16481 	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
16482 	if (constructor == NULL) {
16483 		if (UNEXPECTED(EG(exception))) {
16484 			HANDLE_EXCEPTION();
16485 		}
16486 
16487 		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
16488 		 * opcode is DO_FCALL in case EXT instructions are used. */
16489 		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
16490 			ZEND_VM_NEXT_OPCODE_EX(1, 2);
16491 		}
16492 
16493 		/* Perform a dummy function call */
16494 		call = zend_vm_stack_push_call_frame(
16495 			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
16496 			opline->extended_value, NULL, NULL);
16497 	} else {
16498 		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!constructor->op_array.run_time_cache)) {
16499 			init_func_run_time_cache(&constructor->op_array);
16500 		}
16501 		/* We are not handling overloaded classes right now */
16502 		call = zend_vm_stack_push_call_frame(
16503 			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_CTOR,
16504 			constructor,
16505 			opline->extended_value,
16506 			ce,
16507 			Z_OBJ_P(result));
16508 		Z_ADDREF_P(result);
16509 	}
16510 
16511 	call->prev_execute_data = EX(call);
16512 	EX(call) = call;
16513 	ZEND_VM_NEXT_OPCODE();
16514 }
16515 
16516 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16517 {
16518 	USE_OPLINE
16519 	zend_free_op free_op1;
16520 	zval *expr;
16521 	zval *result = EX_VAR(opline->result.var);
16522 
16523 	SAVE_OPLINE();
16524 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16525 
16526 	switch (opline->extended_value) {
16527 		case IS_NULL:
16528 			ZVAL_NULL(result);
16529 			break;
16530 		case _IS_BOOL:
16531 			ZVAL_BOOL(result, zend_is_true(expr));
16532 			break;
16533 		case IS_LONG:
16534 			ZVAL_LONG(result, zval_get_long(expr));
16535 			break;
16536 		case IS_DOUBLE:
16537 			ZVAL_DOUBLE(result, zval_get_double(expr));
16538 			break;
16539 		case IS_STRING:
16540 			ZVAL_STR(result, zval_get_string(expr));
16541 			break;
16542 		default:
16543 			if (IS_VAR & (IS_VAR|IS_CV)) {
16544 				ZVAL_DEREF(expr);
16545 			}
16546 			/* If value is already of correct type, return it directly */
16547 			if (Z_TYPE_P(expr) == opline->extended_value) {
16548 				ZVAL_COPY_VALUE(result, expr);
16549 				if (IS_VAR == IS_CONST) {
16550 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
16551 				} else if (IS_VAR != IS_TMP_VAR) {
16552 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
16553 				}
16554 
16555 				zval_ptr_dtor_nogc(free_op1);
16556 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16557 			}
16558 
16559 			if (opline->extended_value == IS_ARRAY) {
16560 				if (Z_TYPE_P(expr) != IS_OBJECT) {
16561 					ZVAL_NEW_ARR(result);
16562 					zend_hash_init(Z_ARRVAL_P(result), 8, NULL, ZVAL_PTR_DTOR, 0);
16563 					if (Z_TYPE_P(expr) != IS_NULL) {
16564 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
16565 						if (IS_VAR == IS_CONST) {
16566 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
16567 						} else {
16568 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
16569 						}
16570 					}
16571 				} else {
16572 					ZVAL_COPY_VALUE(result, expr);
16573 					Z_ADDREF_P(result);
16574 					convert_to_array(result);
16575 				}
16576 			} else {
16577 				if (Z_TYPE_P(expr) != IS_ARRAY) {
16578 					object_init(result);
16579 					if (Z_TYPE_P(expr) != IS_NULL) {
16580 						expr = zend_hash_add_new(Z_OBJPROP_P(result), ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
16581 						if (IS_VAR == IS_CONST) {
16582 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
16583 						} else {
16584 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
16585 						}
16586 					}
16587 				} else {
16588 					ZVAL_COPY(result, expr);
16589 					convert_to_object(result);
16590 				}
16591 			}
16592 	}
16593 
16594 	zval_ptr_dtor_nogc(free_op1);
16595 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16596 }
16597 
16598 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16599 {
16600 	USE_OPLINE
16601 	zend_free_op free_op1;
16602 	zval *array_ptr, *result;
16603 
16604 	SAVE_OPLINE();
16605 
16606 	array_ptr = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16607 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
16608 		result = EX_VAR(opline->result.var);
16609 		ZVAL_COPY_VALUE(result, array_ptr);
16610 		if (IS_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
16611 			Z_ADDREF_P(array_ptr);
16612 		}
16613 		Z_FE_POS_P(result) = 0;
16614 
16615 		zval_ptr_dtor_nogc(free_op1);
16616 		ZEND_VM_NEXT_OPCODE();
16617 	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
16618 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
16619 			result = EX_VAR(opline->result.var);
16620 			ZVAL_COPY_VALUE(result, array_ptr);
16621 			if (IS_VAR != IS_TMP_VAR) {
16622 				Z_ADDREF_P(array_ptr);
16623 			}
16624 			if (Z_OBJ_P(array_ptr)->properties
16625 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
16626 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
16627 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
16628 				}
16629 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
16630 			}
16631 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
16632 
16633 			zval_ptr_dtor_nogc(free_op1);
16634 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16635 		} else {
16636 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
16637 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 0);
16638 			zend_bool is_empty;
16639 
16640 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
16641 				zval_ptr_dtor_nogc(free_op1);
16642 				if (iter) {
16643 					OBJ_RELEASE(&iter->std);
16644 				}
16645 				if (!EG(exception)) {
16646 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
16647 				}
16648 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16649 				HANDLE_EXCEPTION();
16650 			}
16651 
16652 			iter->index = 0;
16653 			if (iter->funcs->rewind) {
16654 				iter->funcs->rewind(iter);
16655 				if (UNEXPECTED(EG(exception) != NULL)) {
16656 					OBJ_RELEASE(&iter->std);
16657 					zval_ptr_dtor_nogc(free_op1);
16658 					ZVAL_UNDEF(EX_VAR(opline->result.var));
16659 					HANDLE_EXCEPTION();
16660 				}
16661 			}
16662 
16663 			is_empty = iter->funcs->valid(iter) != SUCCESS;
16664 
16665 			if (UNEXPECTED(EG(exception) != NULL)) {
16666 				OBJ_RELEASE(&iter->std);
16667 				zval_ptr_dtor_nogc(free_op1);
16668 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16669 				HANDLE_EXCEPTION();
16670 			}
16671 			iter->index = -1; /* will be set to 0 before using next handler */
16672 
16673 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
16674 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
16675 
16676 			zval_ptr_dtor_nogc(free_op1);
16677 			if (UNEXPECTED(EG(exception))) {
16678 				HANDLE_EXCEPTION();
16679 			} else if (is_empty) {
16680 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
16681 				ZEND_VM_CONTINUE();
16682 			} else {
16683 				ZEND_VM_NEXT_OPCODE();
16684 			}
16685 		}
16686 	} else {
16687 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
16688 		ZVAL_UNDEF(EX_VAR(opline->result.var));
16689 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
16690 		zval_ptr_dtor_nogc(free_op1);
16691 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
16692 	}
16693 }
16694 
16695 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16696 {
16697 	USE_OPLINE
16698 	zend_free_op free_op1;
16699 	zval *array_ptr, *array_ref;
16700 
16701 	SAVE_OPLINE();
16702 
16703 	if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
16704 		array_ref = array_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16705 		if (Z_ISREF_P(array_ref)) {
16706 			array_ptr = Z_REFVAL_P(array_ref);
16707 		}
16708 	} else {
16709 		array_ref = array_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
16710 	}
16711 
16712 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
16713 		if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
16714 			if (array_ptr == array_ref) {
16715 				ZVAL_NEW_REF(array_ref, array_ref);
16716 				array_ptr = Z_REFVAL_P(array_ref);
16717 			}
16718 			Z_ADDREF_P(array_ref);
16719 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
16720 		} else {
16721 			array_ref = EX_VAR(opline->result.var);
16722 			ZVAL_NEW_REF(array_ref, array_ptr);
16723 			array_ptr = Z_REFVAL_P(array_ref);
16724 		}
16725 		if (IS_VAR == IS_CONST) {
16726 			zval_copy_ctor_func(array_ptr);
16727 		} else {
16728 			SEPARATE_ARRAY(array_ptr);
16729 		}
16730 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
16731 
16732 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16733 		ZEND_VM_NEXT_OPCODE();
16734 	} else if (IS_VAR != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
16735 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
16736 			if (IS_VAR == IS_VAR || IS_VAR == IS_CV) {
16737 				if (array_ptr == array_ref) {
16738 					ZVAL_NEW_REF(array_ref, array_ref);
16739 					array_ptr = Z_REFVAL_P(array_ref);
16740 				}
16741 				Z_ADDREF_P(array_ref);
16742 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
16743 			} else {
16744 				array_ptr = EX_VAR(opline->result.var);
16745 				ZVAL_COPY_VALUE(array_ptr, array_ref);
16746 			}
16747 			if (Z_OBJ_P(array_ptr)->properties
16748 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
16749 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
16750 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
16751 				}
16752 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
16753 			}
16754 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
16755 
16756 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16757 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16758 		} else {
16759 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
16760 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 1);
16761 			zend_bool is_empty;
16762 
16763 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
16764 				if (IS_VAR == IS_VAR) {
16765 					if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16766 				} else {
16767 					zval_ptr_dtor_nogc(free_op1);
16768 				}
16769 				if (!EG(exception)) {
16770 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
16771 				}
16772 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16773 				HANDLE_EXCEPTION();
16774 			}
16775 
16776 			iter->index = 0;
16777 			if (iter->funcs->rewind) {
16778 				iter->funcs->rewind(iter);
16779 				if (UNEXPECTED(EG(exception) != NULL)) {
16780 					OBJ_RELEASE(&iter->std);
16781 					if (IS_VAR == IS_VAR) {
16782 						if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16783 					} else {
16784 						zval_ptr_dtor_nogc(free_op1);
16785 					}
16786 					ZVAL_UNDEF(EX_VAR(opline->result.var));
16787 					HANDLE_EXCEPTION();
16788 				}
16789 			}
16790 
16791 			is_empty = iter->funcs->valid(iter) != SUCCESS;
16792 
16793 			if (UNEXPECTED(EG(exception) != NULL)) {
16794 				OBJ_RELEASE(&iter->std);
16795 				if (IS_VAR == IS_VAR) {
16796 					if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16797 				} else {
16798 					zval_ptr_dtor_nogc(free_op1);
16799 				}
16800 				ZVAL_UNDEF(EX_VAR(opline->result.var));
16801 				HANDLE_EXCEPTION();
16802 			}
16803 			iter->index = -1; /* will be set to 0 before using next handler */
16804 
16805 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
16806 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
16807 
16808 			if (IS_VAR == IS_VAR) {
16809 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16810 			} else {
16811 				zval_ptr_dtor_nogc(free_op1);
16812 			}
16813 			if (UNEXPECTED(EG(exception))) {
16814 				HANDLE_EXCEPTION();
16815 			} else if (is_empty) {
16816 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
16817 				ZEND_VM_CONTINUE();
16818 			} else {
16819 				ZEND_VM_NEXT_OPCODE();
16820 			}
16821 		}
16822 	} else {
16823 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
16824 		ZVAL_UNDEF(EX_VAR(opline->result.var));
16825 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
16826 		if (IS_VAR == IS_VAR) {
16827 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
16828 		} else {
16829 			zval_ptr_dtor_nogc(free_op1);
16830 		}
16831 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
16832 	}
16833 }
16834 
16835 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16836 {
16837 	USE_OPLINE
16838 	zval *array;
16839 	zval *value;
16840 	uint32_t value_type;
16841 	HashTable *fe_ht;
16842 	HashPosition pos;
16843 	Bucket *p;
16844 
16845 	array = EX_VAR(opline->op1.var);
16846 	SAVE_OPLINE();
16847 	if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
16848 		fe_ht = Z_ARRVAL_P(array);
16849 		pos = Z_FE_POS_P(array);
16850 		p = fe_ht->arData + pos;
16851 		while (1) {
16852 			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
16853 				/* reached end of iteration */
16854 				goto fe_fetch_r_exit;
16855 			}
16856 			value = &p->val;
16857 			value_type = Z_TYPE_INFO_P(value);
16858 			if (EXPECTED(value_type != IS_UNDEF)) {
16859 				if (UNEXPECTED(value_type == IS_INDIRECT)) {
16860 					value = Z_INDIRECT_P(value);
16861 					value_type = Z_TYPE_INFO_P(value);
16862 					if (EXPECTED(value_type != IS_UNDEF)) {
16863 						break;
16864 					}
16865 				} else {
16866 					break;
16867 				}
16868 			}
16869 			pos++;
16870 			p++;
16871 		}
16872 		Z_FE_POS_P(array) = pos + 1;
16873 		if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
16874 			if (!p->key) {
16875 				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
16876 			} else {
16877 				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
16878 			}
16879 		}
16880 	} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
16881 		zend_object_iterator *iter;
16882 
16883 		if ((iter = zend_iterator_unwrap(array)) == NULL) {
16884 			/* plain object */
16885 
16886  			fe_ht = Z_OBJPROP_P(array);
16887 			pos = zend_hash_iterator_pos(Z_FE_ITER_P(array), fe_ht);
16888 			p = fe_ht->arData + pos;
16889 			while (1) {
16890 				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
16891 					/* reached end of iteration */
16892 					goto fe_fetch_r_exit;
16893 				}
16894 
16895 				value = &p->val;
16896 				value_type = Z_TYPE_INFO_P(value);
16897 				if (EXPECTED(value_type != IS_UNDEF)) {
16898 					if (UNEXPECTED(value_type == IS_INDIRECT)) {
16899 						value = Z_INDIRECT_P(value);
16900 						value_type = Z_TYPE_INFO_P(value);
16901 						if (EXPECTED(value_type != IS_UNDEF)
16902 						 && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
16903 							break;
16904 						}
16905 					} else {
16906 						break;
16907 					}
16908 				}
16909 				pos++;
16910 				p++;
16911 			}
16912 			if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
16913 				if (UNEXPECTED(!p->key)) {
16914 					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
16915 				} else if (ZSTR_VAL(p->key)[0]) {
16916 					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
16917 				} else {
16918 					const char *class_name, *prop_name;
16919 					size_t prop_name_len;
16920 					zend_unmangle_property_name_ex(
16921 						p->key, &class_name, &prop_name, &prop_name_len);
16922 					ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
16923 				}
16924 			}
16925 			if (++pos >= fe_ht->nNumUsed) {
16926 				pos = HT_INVALID_IDX;
16927 			}
16928 			EG(ht_iterators)[Z_FE_ITER_P(array)].pos = pos;
16929 		} else {
16930 			if (EXPECTED(++iter->index > 0)) {
16931 				/* This could cause an endless loop if index becomes zero again.
16932 				 * In case that ever happens we need an additional flag. */
16933 				iter->funcs->move_forward(iter);
16934 				if (UNEXPECTED(EG(exception) != NULL)) {
16935 					UNDEF_RESULT();
16936 					HANDLE_EXCEPTION();
16937 				}
16938 				if (UNEXPECTED(iter->funcs->valid(iter) == FAILURE)) {
16939 					/* reached end of iteration */
16940 					if (UNEXPECTED(EG(exception) != NULL)) {
16941 						UNDEF_RESULT();
16942 						HANDLE_EXCEPTION();
16943 					}
16944 					goto fe_fetch_r_exit;
16945 				}
16946 			}
16947 			value = iter->funcs->get_current_data(iter);
16948 			if (UNEXPECTED(EG(exception) != NULL)) {
16949 				UNDEF_RESULT();
16950 				HANDLE_EXCEPTION();
16951 			}
16952 			if (!value) {
16953 				/* failure in get_current_data */
16954 				goto fe_fetch_r_exit;
16955 			}
16956 			if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
16957 				if (iter->funcs->get_current_key) {
16958 					iter->funcs->get_current_key(iter, EX_VAR(opline->result.var));
16959 					if (UNEXPECTED(EG(exception) != NULL)) {
16960 						UNDEF_RESULT();
16961 						HANDLE_EXCEPTION();
16962 					}
16963 				} else {
16964 					ZVAL_LONG(EX_VAR(opline->result.var), iter->index);
16965 				}
16966 			}
16967 			value_type = Z_TYPE_INFO_P(value);
16968 		}
16969 	} else {
16970 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
16971 		if (UNEXPECTED(EG(exception))) {
16972 			UNDEF_RESULT();
16973 			HANDLE_EXCEPTION();
16974 		}
16975 fe_fetch_r_exit:
16976 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
16977 		ZEND_VM_CONTINUE();
16978 	}
16979 
16980 	if (EXPECTED(opline->op2_type == IS_CV)) {
16981 		zval *variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
16982 		zend_assign_to_variable(variable_ptr, value, IS_CV);
16983 	} else {
16984 		zval *res = EX_VAR(opline->op2.var);
16985 		zend_refcounted *gc = Z_COUNTED_P(value);
16986 
16987 		ZVAL_COPY_VALUE_EX(res, value, gc, value_type);
16988 		if (EXPECTED((value_type & (IS_TYPE_REFCOUNTED << Z_TYPE_FLAGS_SHIFT)) != 0)) {
16989 			GC_REFCOUNT(gc)++;
16990 		}
16991 	}
16992 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
16993 }
16994 
16995 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
16996 {
16997 	USE_OPLINE
16998 	zval *array;
16999 	zval *value;
17000 	uint32_t value_type;
17001 	HashTable *fe_ht;
17002 	HashPosition pos;
17003 	Bucket *p;
17004 
17005 	array = EX_VAR(opline->op1.var);
17006 	SAVE_OPLINE();
17007 
17008 	ZVAL_DEREF(array);
17009 	if (EXPECTED(Z_TYPE_P(array) == IS_ARRAY)) {
17010 		pos = zend_hash_iterator_pos_ex(Z_FE_ITER_P(EX_VAR(opline->op1.var)), array);
17011 		fe_ht = Z_ARRVAL_P(array);
17012 		p = fe_ht->arData + pos;
17013 		while (1) {
17014 			if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
17015 				/* reached end of iteration */
17016 				goto fe_fetch_w_exit;
17017 			}
17018 			value = &p->val;
17019 			value_type = Z_TYPE_INFO_P(value);
17020 			if (EXPECTED(value_type != IS_UNDEF)) {
17021 				if (UNEXPECTED(value_type == IS_INDIRECT)) {
17022 					value = Z_INDIRECT_P(value);
17023 					value_type = Z_TYPE_INFO_P(value);
17024 					if (EXPECTED(value_type != IS_UNDEF)) {
17025 						break;
17026 					}
17027 				} else {
17028 					break;
17029 				}
17030 			}
17031 			pos++;
17032 			p++;
17033 		}
17034 		if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
17035 			if (!p->key) {
17036 				ZVAL_LONG(EX_VAR(opline->result.var), p->h);
17037 			} else {
17038 				ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
17039 			}
17040 		}
17041 		if (++pos >= fe_ht->nNumUsed) {
17042 			pos = HT_INVALID_IDX;
17043 		}
17044 		EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
17045 	} else if (EXPECTED(Z_TYPE_P(array) == IS_OBJECT)) {
17046 		zend_object_iterator *iter;
17047 
17048 		if ((iter = zend_iterator_unwrap(array)) == NULL) {
17049 			/* plain object */
17050 
17051  			fe_ht = Z_OBJPROP_P(array);
17052 			pos = zend_hash_iterator_pos(Z_FE_ITER_P(EX_VAR(opline->op1.var)), fe_ht);
17053 			p = fe_ht->arData + pos;
17054 			while (1) {
17055 				if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
17056 					/* reached end of iteration */
17057 					goto fe_fetch_w_exit;
17058 				}
17059 
17060 				value = &p->val;
17061 				value_type = Z_TYPE_INFO_P(value);
17062 				if (EXPECTED(value_type != IS_UNDEF)) {
17063 					if (UNEXPECTED(value_type == IS_INDIRECT)) {
17064 						value = Z_INDIRECT_P(value);
17065 						value_type = Z_TYPE_INFO_P(value);
17066 						if (EXPECTED(value_type != IS_UNDEF)
17067 						 && EXPECTED(zend_check_property_access(Z_OBJ_P(array), p->key) == SUCCESS)) {
17068 							break;
17069 						}
17070 					} else {
17071 						break;
17072 					}
17073 				}
17074 				pos++;
17075 				p++;
17076 			}
17077 			if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
17078 				if (UNEXPECTED(!p->key)) {
17079 					ZVAL_LONG(EX_VAR(opline->result.var), p->h);
17080 				} else if (ZSTR_VAL(p->key)[0]) {
17081 					ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
17082 				} else {
17083 					const char *class_name, *prop_name;
17084 					size_t prop_name_len;
17085 					zend_unmangle_property_name_ex(
17086 						p->key, &class_name, &prop_name, &prop_name_len);
17087 					ZVAL_STRINGL(EX_VAR(opline->result.var), prop_name, prop_name_len);
17088 				}
17089 			}
17090 			if (++pos >= fe_ht->nNumUsed) {
17091 				pos = HT_INVALID_IDX;
17092 			}
17093 			EG(ht_iterators)[Z_FE_ITER_P(EX_VAR(opline->op1.var))].pos = pos;
17094 		} else {
17095 			if (++iter->index > 0) {
17096 				/* This could cause an endless loop if index becomes zero again.
17097 				 * In case that ever happens we need an additional flag. */
17098 				iter->funcs->move_forward(iter);
17099 				if (UNEXPECTED(EG(exception) != NULL)) {
17100 					UNDEF_RESULT();
17101 					HANDLE_EXCEPTION();
17102 				}
17103 				if (UNEXPECTED(iter->funcs->valid(iter) == FAILURE)) {
17104 					/* reached end of iteration */
17105 					if (UNEXPECTED(EG(exception) != NULL)) {
17106 						UNDEF_RESULT();
17107 						HANDLE_EXCEPTION();
17108 					}
17109 					goto fe_fetch_w_exit;
17110 				}
17111 			}
17112 			value = iter->funcs->get_current_data(iter);
17113 			if (UNEXPECTED(EG(exception) != NULL)) {
17114 				UNDEF_RESULT();
17115 				HANDLE_EXCEPTION();
17116 			}
17117 			if (!value) {
17118 				/* failure in get_current_data */
17119 				goto fe_fetch_w_exit;
17120 			}
17121 			if (opline->result_type & (IS_TMP_VAR|IS_CV)) {
17122 				if (iter->funcs->get_current_key) {
17123 					iter->funcs->get_current_key(iter, EX_VAR(opline->result.var));
17124 					if (UNEXPECTED(EG(exception) != NULL)) {
17125 						UNDEF_RESULT();
17126 						HANDLE_EXCEPTION();
17127 					}
17128 				} else {
17129 					ZVAL_LONG(EX_VAR(opline->result.var), iter->index);
17130 				}
17131 			}
17132 			value_type = Z_TYPE_INFO_P(value);
17133 		}
17134 	} else {
17135 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
17136 		if (UNEXPECTED(EG(exception))) {
17137 			UNDEF_RESULT();
17138 			HANDLE_EXCEPTION();
17139 		}
17140 fe_fetch_w_exit:
17141 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
17142 		ZEND_VM_CONTINUE();
17143 	}
17144 
17145 	if (EXPECTED((value_type & Z_TYPE_MASK) != IS_REFERENCE)) {
17146 		zend_refcounted *gc = Z_COUNTED_P(value);
17147 		zval *ref;
17148 		ZVAL_NEW_EMPTY_REF(value);
17149 		ref = Z_REFVAL_P(value);
17150 		ZVAL_COPY_VALUE_EX(ref, value, gc, value_type);
17151 	}
17152 	if (EXPECTED(opline->op2_type == IS_CV)) {
17153 		zval *variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
17154 		if (EXPECTED(variable_ptr != value)) {
17155 			zend_reference *ref;
17156 
17157 			ref = Z_REF_P(value);
17158 			GC_REFCOUNT(ref)++;
17159 			zval_ptr_dtor(variable_ptr);
17160 			ZVAL_REF(variable_ptr, ref);
17161 		}
17162 	} else {
17163 		Z_ADDREF_P(value);
17164 		ZVAL_REF(EX_VAR(opline->op2.var), Z_REF_P(value));
17165 	}
17166 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17167 }
17168 
17169 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17170 {
17171 	USE_OPLINE
17172 	zend_free_op free_op1;
17173 	zval *value;
17174 	zval *ref = NULL;
17175 	int ret;
17176 
17177 	SAVE_OPLINE();
17178 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17179 
17180 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) && Z_ISREF_P(value)) {
17181 		if (IS_VAR == IS_VAR) {
17182 			ref = value;
17183 		}
17184 		value = Z_REFVAL_P(value);
17185 	}
17186 
17187 	ret = i_zend_is_true(value);
17188 
17189 	if (UNEXPECTED(EG(exception))) {
17190 		zval_ptr_dtor_nogc(free_op1);
17191 		ZVAL_UNDEF(EX_VAR(opline->result.var));
17192 		HANDLE_EXCEPTION();
17193 	}
17194 
17195 	if (ret) {
17196 		zval *result = EX_VAR(opline->result.var);
17197 
17198 		ZVAL_COPY_VALUE(result, value);
17199 		if (IS_VAR == IS_CONST) {
17200 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
17201 		} else if (IS_VAR == IS_CV) {
17202 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
17203 		} else if (IS_VAR == IS_VAR && ref) {
17204 			zend_reference *r = Z_REF_P(ref);
17205 
17206 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
17207 				efree_size(r, sizeof(zend_reference));
17208 			} else if (Z_OPT_REFCOUNTED_P(result)) {
17209 				Z_ADDREF_P(result);
17210 			}
17211 		}
17212 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
17213 		ZEND_VM_CONTINUE();
17214 	}
17215 
17216 	zval_ptr_dtor_nogc(free_op1);
17217 	ZEND_VM_NEXT_OPCODE();
17218 }
17219 
17220 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17221 {
17222 	USE_OPLINE
17223 	zend_free_op free_op1;
17224 	zval *value;
17225 	zval *ref = NULL;
17226 
17227 	SAVE_OPLINE();
17228 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17229 
17230 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) && Z_ISREF_P(value)) {
17231 		if (IS_VAR == IS_VAR) {
17232 			ref = value;
17233 		}
17234 		value = Z_REFVAL_P(value);
17235 	}
17236 
17237 	if (Z_TYPE_P(value) > IS_NULL) {
17238 		zval *result = EX_VAR(opline->result.var);
17239 		ZVAL_COPY_VALUE(result, value);
17240 		if (IS_VAR == IS_CONST) {
17241 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
17242 		} else if (IS_VAR == IS_CV) {
17243 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
17244 		} else if (IS_VAR == IS_VAR && ref) {
17245 			zend_reference *r = Z_REF_P(ref);
17246 
17247 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
17248 				efree_size(r, sizeof(zend_reference));
17249 			} else if (Z_OPT_REFCOUNTED_P(result)) {
17250 				Z_ADDREF_P(result);
17251 			}
17252 		}
17253 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
17254 		ZEND_VM_CONTINUE();
17255 	}
17256 
17257 	zval_ptr_dtor_nogc(free_op1);
17258 	ZEND_VM_NEXT_OPCODE();
17259 }
17260 
17261 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17262 {
17263 	USE_OPLINE
17264 	zend_free_op free_op1;
17265 	zval *value;
17266 	zval *result = EX_VAR(opline->result.var);
17267 
17268 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17269 	if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
17270 		SAVE_OPLINE();
17271 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
17272 		ZVAL_NULL(result);
17273 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17274 	}
17275 
17276 	if (IS_VAR == IS_CV) {
17277 		ZVAL_DEREF(value);
17278 		ZVAL_COPY(result, value);
17279 	} else if (IS_VAR == IS_VAR) {
17280 		if (UNEXPECTED(Z_ISREF_P(value))) {
17281 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
17282 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
17283 				efree_size(Z_REF_P(value), sizeof(zend_reference));
17284 			} else if (Z_OPT_REFCOUNTED_P(result)) {
17285 				Z_ADDREF_P(result);
17286 			}
17287 		} else {
17288 			ZVAL_COPY_VALUE(result, value);
17289 		}
17290 	} else {
17291 		ZVAL_COPY_VALUE(result, value);
17292 		if (IS_VAR == IS_CONST) {
17293 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
17294 				Z_ADDREF_P(result);
17295 			}
17296 		}
17297 	}
17298 	ZEND_VM_NEXT_OPCODE();
17299 }
17300 
17301 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17302 {
17303 	USE_OPLINE
17304 
17305 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
17306 
17307 	zval *val;
17308 	zend_free_op free_op1;
17309 
17310 	SAVE_OPLINE();
17311 	val = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17312 
17313 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
17314 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
17315 		zval_ptr_dtor_nogc(free_op1);
17316 		UNDEF_RESULT();
17317 		HANDLE_EXCEPTION();
17318 	}
17319 
17320 	if (Z_TYPE_P(val) == IS_ARRAY) {
17321 		ZVAL_COPY_VALUE(&generator->values, val);
17322 		if (IS_VAR != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
17323 			Z_ADDREF_P(val);
17324 		}
17325 		Z_FE_POS(generator->values) = 0;
17326 
17327 		zval_ptr_dtor_nogc(free_op1);
17328 	} else if (IS_VAR != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
17329 		zend_class_entry *ce = Z_OBJCE_P(val);
17330 		if (ce == zend_ce_generator) {
17331 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
17332 
17333 			if (IS_VAR != IS_TMP_VAR) {
17334 				Z_ADDREF_P(val);
17335 			}
17336 			zval_ptr_dtor_nogc(free_op1);
17337 
17338 			if (Z_ISUNDEF(new_gen->retval)) {
17339 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
17340 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
17341 					zval_ptr_dtor(val);
17342 					UNDEF_RESULT();
17343 					HANDLE_EXCEPTION();
17344 				} else {
17345 					zend_generator_yield_from(generator, new_gen);
17346 				}
17347 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
17348 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
17349 				zval_ptr_dtor(val);
17350 				UNDEF_RESULT();
17351 				HANDLE_EXCEPTION();
17352 			} else {
17353 				if (RETURN_VALUE_USED(opline)) {
17354 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
17355 				}
17356 				ZEND_VM_NEXT_OPCODE();
17357 			}
17358 		} else {
17359 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
17360 			zval_ptr_dtor_nogc(free_op1);
17361 
17362 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
17363 				if (!EG(exception)) {
17364 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
17365 				}
17366 				UNDEF_RESULT();
17367 				HANDLE_EXCEPTION();
17368 			}
17369 
17370 			iter->index = 0;
17371 			if (iter->funcs->rewind) {
17372 				iter->funcs->rewind(iter);
17373 				if (UNEXPECTED(EG(exception) != NULL)) {
17374 					OBJ_RELEASE(&iter->std);
17375 					UNDEF_RESULT();
17376 					HANDLE_EXCEPTION();
17377 				}
17378 			}
17379 
17380 			ZVAL_OBJ(&generator->values, &iter->std);
17381 		}
17382 	} else {
17383 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
17384 		UNDEF_RESULT();
17385 		HANDLE_EXCEPTION();
17386 	}
17387 
17388 	/* This is the default return value
17389 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
17390 	if (RETURN_VALUE_USED(opline)) {
17391 		ZVAL_NULL(EX_VAR(opline->result.var));
17392 	}
17393 
17394 	/* This generator has no send target (though the generator we delegate to might have one) */
17395 	generator->send_target = NULL;
17396 
17397 	/* We increment to the next op, so we are at the correct position when the
17398 	 * generator is resumed. */
17399 	ZEND_VM_INC_OPCODE();
17400 
17401 	/* The GOTO VM uses a local opline variable. We need to set the opline
17402 	 * variable in execute_data so we don't resume at an old position. */
17403 	SAVE_OPLINE();
17404 
17405 	ZEND_VM_RETURN();
17406 }
17407 
17408 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17409 {
17410 	USE_OPLINE
17411 	zval *value;
17412 	int result = 0;
17413 	zend_free_op free_op1;
17414 
17415 	SAVE_OPLINE();
17416 	value = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17417 	if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
17418 		if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
17419 			const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
17420 
17421 			if (EXPECTED(type_name != NULL)) {
17422 				result = 1;
17423 			}
17424 		} else {
17425 			result = 1;
17426 		}
17427 	} else if (UNEXPECTED(opline->extended_value == _IS_BOOL) &&
17428 			   EXPECTED(Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE)) {
17429 		result = 1;
17430 	}
17431 	zval_ptr_dtor_nogc(free_op1);
17432 	ZEND_VM_SMART_BRANCH(result, 1);
17433 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
17434 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17435 }
17436 
17437 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17438 {
17439 	USE_OPLINE
17440 	zval *varptr, *arg;
17441 	zend_free_op free_op1;
17442 
17443 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17444 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
17445 
17446 	if (IS_VAR == IS_CV) {
17447 		ZVAL_COPY(arg, varptr);
17448 	} else /* if (IS_VAR == IS_VAR) */ {
17449 		ZVAL_COPY_VALUE(arg, varptr);
17450 	}
17451 
17452 	ZEND_VM_NEXT_OPCODE();
17453 }
17454 
17455 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17456 {
17457 	USE_OPLINE
17458 	zval *varptr, *arg;
17459 	zend_free_op free_op1;
17460 	uint32_t arg_num = opline->op2.num;
17461 
17462 	if (EXPECTED(0)) {
17463 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17464 			goto send_var_by_ref_simple;
17465 		}
17466 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17467 send_var_by_ref_simple:
17468 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17469 	}
17470 
17471 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17472 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
17473 
17474 	if (IS_VAR == IS_CV) {
17475 		ZVAL_COPY(arg, varptr);
17476 	} else /* if (IS_VAR == IS_VAR) */ {
17477 		ZVAL_COPY_VALUE(arg, varptr);
17478 	}
17479 
17480 	ZEND_VM_NEXT_OPCODE();
17481 }
17482 
17483 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17484 {
17485 	USE_OPLINE
17486 	zval *varptr, *arg;
17487 	zend_free_op free_op1;
17488 	uint32_t arg_num = opline->op2.num;
17489 
17490 	if (EXPECTED(1)) {
17491 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17492 			goto send_var_by_ref_simple;
17493 		}
17494 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
17495 send_var_by_ref_simple:
17496 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17497 	}
17498 
17499 	varptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17500 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
17501 
17502 	if (IS_VAR == IS_CV) {
17503 		ZVAL_COPY(arg, varptr);
17504 	} else /* if (IS_VAR == IS_VAR) */ {
17505 		ZVAL_COPY_VALUE(arg, varptr);
17506 	}
17507 
17508 	ZEND_VM_NEXT_OPCODE();
17509 }
17510 
17511 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17512 {
17513 	USE_OPLINE
17514 	zend_free_op free_op1;
17515 	zval *op1, *op2;
17516 	int result;
17517 
17518 	SAVE_OPLINE();
17519 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17520 	op2 = EX_CONSTANT(opline->op2);
17521 	result = fast_is_identical_function(op1, op2);
17522 	zval_ptr_dtor_nogc(free_op1);
17523 
17524 	ZEND_VM_SMART_BRANCH(result, 1);
17525 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
17526 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17527 }
17528 
17529 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17530 {
17531 	USE_OPLINE
17532 	zend_free_op free_op1;
17533 	zval *op1, *op2;
17534 	int result;
17535 
17536 	SAVE_OPLINE();
17537 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17538 	op2 = EX_CONSTANT(opline->op2);
17539 	result = fast_is_not_identical_function(op1, op2);
17540 	zval_ptr_dtor_nogc(free_op1);
17541 
17542 	ZEND_VM_SMART_BRANCH(result, 1);
17543 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
17544 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17545 }
17546 
17547 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
17548 {
17549 	USE_OPLINE
17550 	zend_free_op free_op1, free_op_data1;
17551 	zval *object;
17552 	zval *property;
17553 	zval *value;
17554 	zval *zptr;
17555 
17556 	SAVE_OPLINE();
17557 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17558 
17559 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
17560 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17561 	}
17562 
17563 	property = EX_CONSTANT(opline->op2);
17564 
17565 	do {
17566 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
17567 
17568 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
17569 			ZVAL_DEREF(object);
17570 			if (UNEXPECTED(!make_real_object(object))) {
17571 				zend_string *property_name = zval_get_string(property);
17572 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
17573 				zend_string_release(property_name);
17574 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17575 					ZVAL_NULL(EX_VAR(opline->result.var));
17576 				}
17577 				break;
17578 			}
17579 		}
17580 
17581 		/* here we are sure we are dealing with an object */
17582 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
17583 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
17584 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
17585 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17586 					ZVAL_NULL(EX_VAR(opline->result.var));
17587 				}
17588 			} else {
17589 				ZVAL_DEREF(zptr);
17590 				SEPARATE_ZVAL_NOREF(zptr);
17591 
17592 				binary_op(zptr, zptr, value);
17593 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17594 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
17595 				}
17596 			}
17597 		} else {
17598 			zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
17599 		}
17600 	} while (0);
17601 
17602 	FREE_OP(free_op_data1);
17603 
17604 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
17605 	/* assign_obj has two opcodes! */
17606 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
17607 }
17608 
17609 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
17610 {
17611 	USE_OPLINE
17612 	zend_free_op free_op1, free_op_data1;
17613 	zval *var_ptr;
17614 	zval *value, *container, *dim;
17615 
17616 	SAVE_OPLINE();
17617 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17618 
17619 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
17620 assign_dim_op_array:
17621 		SEPARATE_ARRAY(container);
17622 assign_dim_op_new_array:
17623 		if (IS_CONST == IS_UNUSED) {
17624 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
17625 			if (UNEXPECTED(!var_ptr)) {
17626 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
17627 				goto assign_dim_op_ret_null;
17628 			}
17629 		} else {
17630 			dim = EX_CONSTANT(opline->op2);
17631 
17632 			if (IS_CONST == IS_CONST) {
17633 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
17634 			} else {
17635 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
17636 			}
17637 			if (UNEXPECTED(!var_ptr)) {
17638 				goto assign_dim_op_ret_null;
17639 			}
17640 			ZVAL_DEREF(var_ptr);
17641 			SEPARATE_ZVAL_NOREF(var_ptr);
17642 		}
17643 
17644 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
17645 
17646 		binary_op(var_ptr, var_ptr, value);
17647 
17648 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17649 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
17650 		}
17651 	} else {
17652 		if (EXPECTED(Z_ISREF_P(container))) {
17653 			container = Z_REFVAL_P(container);
17654 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
17655 				goto assign_dim_op_array;
17656 			}
17657 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
17658 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
17659 assign_dim_op_convert_to_array:
17660 			ZVAL_NEW_ARR(container);
17661 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
17662 			goto assign_dim_op_new_array;
17663 		}
17664 
17665 		dim = EX_CONSTANT(opline->op2);
17666 
17667 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
17668 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
17669 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
17670 		} else {
17671 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
17672 				if (IS_CONST == IS_UNUSED) {
17673 					zend_throw_error(NULL, "[] operator not supported for strings");
17674 				} else {
17675 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
17676 					if (EXPECTED(EG(exception) == NULL)) {
17677 						zend_wrong_string_offset(EXECUTE_DATA_C);
17678 					}
17679 				}
17680 				UNDEF_RESULT();
17681 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
17682 				goto assign_dim_op_convert_to_array;
17683 			} else {
17684 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
17685 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
17686 				}
17687 assign_dim_op_ret_null:
17688 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17689 					ZVAL_NULL(EX_VAR(opline->result.var));
17690 				}
17691 			}
17692 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
17693 		}
17694 	}
17695 
17696 	FREE_OP(free_op_data1);
17697 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
17698 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
17699 }
17700 
17701 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
17702 {
17703 	USE_OPLINE
17704 	zend_free_op free_op1;
17705 	zval *var_ptr;
17706 	zval *value;
17707 
17708 	SAVE_OPLINE();
17709 	value = EX_CONSTANT(opline->op2);
17710 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17711 
17712 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
17713 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17714 			ZVAL_NULL(EX_VAR(opline->result.var));
17715 		}
17716 	} else {
17717 		ZVAL_DEREF(var_ptr);
17718 		SEPARATE_ZVAL_NOREF(var_ptr);
17719 
17720 		binary_op(var_ptr, var_ptr, value);
17721 
17722 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17723 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
17724 		}
17725 	}
17726 
17727 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
17728 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
17729 }
17730 
17731 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
17732 {
17733 #if 1 && IS_CONST == IS_UNUSED
17734 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17735 #else
17736 # if 0 || IS_VAR != IS_UNUSED
17737 	USE_OPLINE
17738 
17739 	if (EXPECTED(1)) {
17740 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17741 	}
17742 	if (EXPECTED(0)) {
17743 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17744 	}
17745 # endif
17746 
17747 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17748 #endif
17749 }
17750 
17751 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
17752 {
17753 #if 1 && IS_CONST == IS_UNUSED
17754 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17755 #else
17756 # if 0 || IS_VAR != IS_UNUSED
17757 	USE_OPLINE
17758 
17759 	if (EXPECTED(0)) {
17760 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17761 	}
17762 	if (EXPECTED(1)) {
17763 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17764 	}
17765 # endif
17766 
17767 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17768 #endif
17769 }
17770 
17771 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
17772 {
17773 #if 1 && IS_CONST == IS_UNUSED
17774 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17775 #else
17776 # if 0 || IS_VAR != IS_UNUSED
17777 	USE_OPLINE
17778 
17779 	if (EXPECTED(0)) {
17780 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17781 	}
17782 	if (EXPECTED(0)) {
17783 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17784 	}
17785 # endif
17786 
17787 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17788 #endif
17789 }
17790 
17791 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17792 {
17793 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17794 }
17795 
17796 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17797 {
17798 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17799 }
17800 
17801 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17802 {
17803 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17804 }
17805 
17806 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17807 {
17808 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17809 }
17810 
17811 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17812 {
17813 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17814 }
17815 
17816 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17817 {
17818 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17819 }
17820 
17821 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17822 {
17823 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17824 }
17825 
17826 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17827 {
17828 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17829 }
17830 
17831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17832 {
17833 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17834 }
17835 
17836 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17837 {
17838 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17839 }
17840 
17841 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17842 {
17843 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17844 }
17845 
17846 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17847 {
17848 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17849 }
17850 
17851 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17852 {
17853 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17854 }
17855 
17856 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17857 {
17858 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17859 }
17860 
17861 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17862 {
17863 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17864 }
17865 
17866 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17867 {
17868 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17869 }
17870 
17871 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17872 {
17873 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17874 }
17875 
17876 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17877 {
17878 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17879 }
17880 
17881 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17882 {
17883 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17884 }
17885 
17886 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17887 {
17888 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17889 }
17890 
17891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17892 {
17893 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17894 }
17895 
17896 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17897 {
17898 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17899 }
17900 
17901 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17902 {
17903 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17904 }
17905 
17906 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17907 {
17908 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17909 }
17910 
17911 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17912 {
17913 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17914 }
17915 
17916 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17917 {
17918 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17919 }
17920 
17921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17922 {
17923 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17924 }
17925 
17926 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17927 {
17928 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17929 }
17930 
17931 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17932 {
17933 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17934 }
17935 
17936 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17937 {
17938 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17939 }
17940 
17941 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17942 {
17943 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17944 }
17945 
17946 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17947 {
17948 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17949 }
17950 
17951 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17952 {
17953 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17954 }
17955 
17956 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17957 {
17958 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17959 }
17960 
17961 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17962 {
17963 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17964 }
17965 
17966 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
17967 {
17968 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
17969 }
17970 
17971 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
17972 {
17973 	USE_OPLINE
17974 	zend_free_op free_op1;
17975 	zval *object;
17976 	zval *property;
17977 	zval *zptr;
17978 
17979 	SAVE_OPLINE();
17980 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
17981 
17982 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
17983 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
17984 	}
17985 
17986 	property = EX_CONSTANT(opline->op2);
17987 
17988 	do {
17989 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
17990 			ZVAL_DEREF(object);
17991 			if (UNEXPECTED(!make_real_object(object))) {
17992 				zend_string *property_name = zval_get_string(property);
17993 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
17994 				zend_string_release(property_name);
17995 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
17996 					ZVAL_NULL(EX_VAR(opline->result.var));
17997 				}
17998 				break;
17999 			}
18000 		}
18001 
18002 		/* here we are sure we are dealing with an object */
18003 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
18004 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
18005 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
18006 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18007 					ZVAL_NULL(EX_VAR(opline->result.var));
18008 				}
18009 			} else {
18010 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
18011 					if (inc) {
18012 						fast_long_increment_function(zptr);
18013 					} else {
18014 						fast_long_decrement_function(zptr);
18015 					}
18016 				} else {
18017 					ZVAL_DEREF(zptr);
18018 					SEPARATE_ZVAL_NOREF(zptr);
18019 
18020 					if (inc) {
18021 						increment_function(zptr);
18022 					} else {
18023 						decrement_function(zptr);
18024 					}
18025 				}
18026 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18027 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
18028 				}
18029 			}
18030 		} else {
18031 			zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
18032 		}
18033 	} while (0);
18034 
18035 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18036 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18037 }
18038 
18039 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18040 {
18041 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
18042 }
18043 
18044 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18045 {
18046 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
18047 }
18048 
18049 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
18050 {
18051 	USE_OPLINE
18052 	zend_free_op free_op1;
18053 	zval *object;
18054 	zval *property;
18055 	zval *zptr;
18056 
18057 	SAVE_OPLINE();
18058 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18059 
18060 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
18061 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18062 	}
18063 
18064 	property = EX_CONSTANT(opline->op2);
18065 
18066 	do {
18067 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
18068 			ZVAL_DEREF(object);
18069 			if (UNEXPECTED(!make_real_object(object))) {
18070 				zend_string *property_name = zval_get_string(property);
18071 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
18072 				zend_string_release(property_name);
18073 				ZVAL_NULL(EX_VAR(opline->result.var));
18074 				break;
18075 			}
18076 		}
18077 
18078 		/* here we are sure we are dealing with an object */
18079 
18080 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
18081 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
18082 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
18083 				ZVAL_NULL(EX_VAR(opline->result.var));
18084 			} else {
18085 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
18086 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
18087 					if (inc) {
18088 						fast_long_increment_function(zptr);
18089 					} else {
18090 						fast_long_decrement_function(zptr);
18091 					}
18092 				} else {
18093 					ZVAL_DEREF(zptr);
18094 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
18095 					zval_opt_copy_ctor(zptr);
18096 					if (inc) {
18097 						increment_function(zptr);
18098 					} else {
18099 						decrement_function(zptr);
18100 					}
18101 				}
18102 			}
18103 		} else {
18104 			zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
18105 		}
18106 	} while (0);
18107 
18108 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18109 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18110 }
18111 
18112 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18113 {
18114 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
18115 }
18116 
18117 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18118 {
18119 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
18120 }
18121 
18122 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18123 {
18124 	USE_OPLINE
18125 	zend_free_op free_op1;
18126 	zval *container;
18127 
18128 	SAVE_OPLINE();
18129 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18130 
18131 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
18132 
18133 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18134 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18135 	}
18136 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18137 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18138 }
18139 
18140 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18141 {
18142 	USE_OPLINE
18143 	zend_free_op free_op1;
18144 	zval *container;
18145 
18146 	SAVE_OPLINE();
18147 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18148 
18149 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
18150 
18151 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18152 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18153 	}
18154 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18155 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18156 }
18157 
18158 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18159 {
18160 	USE_OPLINE
18161 	zval *container;
18162 	zend_free_op free_op1;
18163 
18164 	SAVE_OPLINE();
18165 
18166 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
18167         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
18168             zend_throw_error(NULL, "Cannot use temporary expression in write context");
18169 
18170 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
18171 			ZVAL_UNDEF(EX_VAR(opline->result.var));
18172 			HANDLE_EXCEPTION();
18173         }
18174 		container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18175 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
18176 		if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18177 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18178 		}
18179 
18180 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18181 	} else {
18182 		if (IS_CONST == IS_UNUSED) {
18183 			zend_throw_error(NULL, "Cannot use [] for reading");
18184 
18185 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
18186 			ZVAL_UNDEF(EX_VAR(opline->result.var));
18187 			HANDLE_EXCEPTION();
18188 		}
18189 		container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18190 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
18191 
18192 		zval_ptr_dtor_nogc(free_op1);
18193 	}
18194 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18195 }
18196 
18197 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18198 {
18199 	USE_OPLINE
18200 	zend_free_op free_op1;
18201 	zval *container;
18202 
18203 	SAVE_OPLINE();
18204 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18205 
18206 	zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
18207 
18208 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18209 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18210 	}
18211 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18212 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18213 }
18214 
18215 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18216 {
18217 	USE_OPLINE
18218 	zend_free_op free_op1;
18219 	zval *container;
18220 
18221 	zval *offset;
18222 
18223 	SAVE_OPLINE();
18224 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18225 
18226 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
18227 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18228 	}
18229 
18230 	offset = EX_CONSTANT(opline->op2);
18231 
18232 	if (IS_VAR == IS_CONST ||
18233 	    (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
18234 		if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
18235 			container = Z_REFVAL_P(container);
18236 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
18237 				goto fetch_obj_r_no_object;
18238 			}
18239 		} else {
18240 			goto fetch_obj_r_no_object;
18241 		}
18242 	}
18243 
18244 	/* here we are sure we are dealing with an object */
18245 	do {
18246 		zend_object *zobj = Z_OBJ_P(container);
18247 		zval *retval;
18248 
18249 		if (IS_CONST == IS_CONST &&
18250 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
18251 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
18252 
18253 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
18254 				retval = OBJ_PROP(zobj, prop_offset);
18255 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
18256 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
18257 					break;
18258 				}
18259 			} else if (EXPECTED(zobj->properties != NULL)) {
18260 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
18261 				if (EXPECTED(retval)) {
18262 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
18263 					break;
18264 				}
18265 			}
18266 		}
18267 
18268 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
18269 			zend_string *property_name;
18270 fetch_obj_r_no_object:
18271 			property_name = zval_get_string(offset);
18272 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
18273 			zend_string_release(property_name);
18274 			ZVAL_NULL(EX_VAR(opline->result.var));
18275 		} else {
18276 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
18277 
18278 			if (retval != EX_VAR(opline->result.var)) {
18279 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
18280 			}
18281 		}
18282 	} while (0);
18283 
18284 	zval_ptr_dtor_nogc(free_op1);
18285 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18286 }
18287 
18288 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18289 {
18290 	USE_OPLINE
18291 	zend_free_op free_op1;
18292 	zval *property;
18293 	zval *container;
18294 
18295 	SAVE_OPLINE();
18296 
18297 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18298 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
18299 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18300 	}
18301 
18302 	property = EX_CONSTANT(opline->op2);
18303 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
18304 
18305 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18306 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18307 	}
18308 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18309 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18310 }
18311 
18312 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18313 {
18314 	USE_OPLINE
18315 	zend_free_op free_op1;
18316 	zval *property;
18317 	zval *container;
18318 
18319 	SAVE_OPLINE();
18320 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18321 
18322 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
18323 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18324 	}
18325 	property = EX_CONSTANT(opline->op2);
18326 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
18327 
18328 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18329 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18330 	}
18331 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18332 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18333 }
18334 
18335 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18336 {
18337 	USE_OPLINE
18338 	zval *container;
18339 
18340 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
18341 		/* Behave like FETCH_OBJ_W */
18342 		zend_free_op free_op1;
18343 		zval *property;
18344 
18345 		SAVE_OPLINE();
18346 		container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18347 
18348 		if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
18349 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18350 		}
18351 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
18352 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
18353 
18354 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18355 			ZVAL_UNDEF(EX_VAR(opline->result.var));
18356 			HANDLE_EXCEPTION();
18357 		}
18358 		property = EX_CONSTANT(opline->op2);
18359 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
18360 
18361 		if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18362 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18363 		}
18364 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18365 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18366 	} else {
18367 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18368 	}
18369 }
18370 
18371 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18372 {
18373 	USE_OPLINE
18374 	zend_free_op free_op1;
18375 	zval *container, *property;
18376 
18377 	SAVE_OPLINE();
18378 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18379 
18380 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
18381 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18382 	}
18383 
18384 	property = EX_CONSTANT(opline->op2);
18385 
18386 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
18387 
18388 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
18389 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
18390 	}
18391 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18392 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
18393 }
18394 
18395 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18396 {
18397 	USE_OPLINE
18398 	zend_free_op free_op1;
18399 	zval *object, *property, *value, tmp;
18400 
18401 	SAVE_OPLINE();
18402 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18403 
18404 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
18405 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18406 	}
18407 
18408 	property = EX_CONSTANT(opline->op2);
18409 	value = EX_CONSTANT((opline+1)->op1);
18410 
18411 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
18412 		do {
18413 			if (Z_ISREF_P(object)) {
18414 				object = Z_REFVAL_P(object);
18415 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
18416 					break;
18417 				}
18418 			}
18419 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
18420 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
18421 				zend_object *obj;
18422 
18423 				zval_ptr_dtor(object);
18424 				object_init(object);
18425 				Z_ADDREF_P(object);
18426 				obj = Z_OBJ_P(object);
18427 				zend_error(E_WARNING, "Creating default object from empty value");
18428 				if (GC_REFCOUNT(obj) == 1) {
18429 					/* the enclosing container was deleted, obj is unreferenced */
18430 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18431 						ZVAL_NULL(EX_VAR(opline->result.var));
18432 					}
18433 
18434 					OBJ_RELEASE(obj);
18435 					goto exit_assign_obj;
18436 				}
18437 				Z_DELREF_P(object);
18438 			} else {
18439 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
18440 					zend_string *property_name = zval_get_string(property);
18441 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
18442 					zend_string_release(property_name);
18443 				}
18444 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18445 					ZVAL_NULL(EX_VAR(opline->result.var));
18446 				}
18447 
18448 				goto exit_assign_obj;
18449 			}
18450 		} while (0);
18451 	}
18452 
18453 	if (IS_CONST == IS_CONST &&
18454 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
18455 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
18456 		zend_object *zobj = Z_OBJ_P(object);
18457 		zval *property_val;
18458 
18459 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
18460 			property_val = OBJ_PROP(zobj, prop_offset);
18461 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
18462 fast_assign_obj:
18463 				value = zend_assign_to_variable(property_val, value, IS_CONST);
18464 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18465 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18466 				}
18467 				goto exit_assign_obj;
18468 			}
18469 		} else {
18470 			if (EXPECTED(zobj->properties != NULL)) {
18471 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
18472 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
18473 						GC_REFCOUNT(zobj->properties)--;
18474 					}
18475 					zobj->properties = zend_array_dup(zobj->properties);
18476 				}
18477 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
18478 				if (property_val) {
18479 					goto fast_assign_obj;
18480 				}
18481 			}
18482 
18483 			if (!zobj->ce->__set) {
18484 
18485 				if (EXPECTED(zobj->properties == NULL)) {
18486 					rebuild_object_properties(zobj);
18487 				}
18488 				if (IS_CONST == IS_CONST) {
18489 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
18490 						Z_ADDREF_P(value);
18491 					}
18492 				} else if (IS_CONST != IS_TMP_VAR) {
18493 					if (Z_ISREF_P(value)) {
18494 						if (IS_CONST == IS_VAR) {
18495 							zend_reference *ref = Z_REF_P(value);
18496 							if (--GC_REFCOUNT(ref) == 0) {
18497 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
18498 								efree_size(ref, sizeof(zend_reference));
18499 								value = &tmp;
18500 							} else {
18501 								value = Z_REFVAL_P(value);
18502 								if (Z_REFCOUNTED_P(value)) {
18503 									Z_ADDREF_P(value);
18504 								}
18505 							}
18506 						} else {
18507 							value = Z_REFVAL_P(value);
18508 							if (Z_REFCOUNTED_P(value)) {
18509 								Z_ADDREF_P(value);
18510 							}
18511 						}
18512 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
18513 						Z_ADDREF_P(value);
18514 					}
18515 				}
18516 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
18517 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18518 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18519 				}
18520 				goto exit_assign_obj;
18521 			}
18522 		}
18523 	}
18524 
18525 	if (!Z_OBJ_HT_P(object)->write_property) {
18526 		zend_string *property_name = zval_get_string(property);
18527 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
18528 		zend_string_release(property_name);
18529 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18530 			ZVAL_NULL(EX_VAR(opline->result.var));
18531 		}
18532 
18533 		goto exit_assign_obj;
18534 	}
18535 
18536 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
18537 		ZVAL_DEREF(value);
18538 	}
18539 
18540 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
18541 
18542 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18543 		ZVAL_COPY(EX_VAR(opline->result.var), value);
18544 	}
18545 
18546 exit_assign_obj:
18547 
18548 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18549 	/* assign_obj has two opcodes! */
18550 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
18551 }
18552 
18553 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18554 {
18555 	USE_OPLINE
18556 	zend_free_op free_op1, free_op_data;
18557 	zval *object, *property, *value, tmp;
18558 
18559 	SAVE_OPLINE();
18560 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18561 
18562 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
18563 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18564 	}
18565 
18566 	property = EX_CONSTANT(opline->op2);
18567 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
18568 
18569 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
18570 		do {
18571 			if (Z_ISREF_P(object)) {
18572 				object = Z_REFVAL_P(object);
18573 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
18574 					break;
18575 				}
18576 			}
18577 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
18578 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
18579 				zend_object *obj;
18580 
18581 				zval_ptr_dtor(object);
18582 				object_init(object);
18583 				Z_ADDREF_P(object);
18584 				obj = Z_OBJ_P(object);
18585 				zend_error(E_WARNING, "Creating default object from empty value");
18586 				if (GC_REFCOUNT(obj) == 1) {
18587 					/* the enclosing container was deleted, obj is unreferenced */
18588 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18589 						ZVAL_NULL(EX_VAR(opline->result.var));
18590 					}
18591 					zval_ptr_dtor_nogc(free_op_data);
18592 					OBJ_RELEASE(obj);
18593 					goto exit_assign_obj;
18594 				}
18595 				Z_DELREF_P(object);
18596 			} else {
18597 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
18598 					zend_string *property_name = zval_get_string(property);
18599 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
18600 					zend_string_release(property_name);
18601 				}
18602 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18603 					ZVAL_NULL(EX_VAR(opline->result.var));
18604 				}
18605 				zval_ptr_dtor_nogc(free_op_data);
18606 				goto exit_assign_obj;
18607 			}
18608 		} while (0);
18609 	}
18610 
18611 	if (IS_CONST == IS_CONST &&
18612 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
18613 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
18614 		zend_object *zobj = Z_OBJ_P(object);
18615 		zval *property_val;
18616 
18617 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
18618 			property_val = OBJ_PROP(zobj, prop_offset);
18619 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
18620 fast_assign_obj:
18621 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
18622 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18623 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18624 				}
18625 				goto exit_assign_obj;
18626 			}
18627 		} else {
18628 			if (EXPECTED(zobj->properties != NULL)) {
18629 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
18630 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
18631 						GC_REFCOUNT(zobj->properties)--;
18632 					}
18633 					zobj->properties = zend_array_dup(zobj->properties);
18634 				}
18635 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
18636 				if (property_val) {
18637 					goto fast_assign_obj;
18638 				}
18639 			}
18640 
18641 			if (!zobj->ce->__set) {
18642 
18643 				if (EXPECTED(zobj->properties == NULL)) {
18644 					rebuild_object_properties(zobj);
18645 				}
18646 				if (IS_TMP_VAR == IS_CONST) {
18647 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
18648 						Z_ADDREF_P(value);
18649 					}
18650 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
18651 					if (Z_ISREF_P(value)) {
18652 						if (IS_TMP_VAR == IS_VAR) {
18653 							zend_reference *ref = Z_REF_P(value);
18654 							if (--GC_REFCOUNT(ref) == 0) {
18655 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
18656 								efree_size(ref, sizeof(zend_reference));
18657 								value = &tmp;
18658 							} else {
18659 								value = Z_REFVAL_P(value);
18660 								if (Z_REFCOUNTED_P(value)) {
18661 									Z_ADDREF_P(value);
18662 								}
18663 							}
18664 						} else {
18665 							value = Z_REFVAL_P(value);
18666 							if (Z_REFCOUNTED_P(value)) {
18667 								Z_ADDREF_P(value);
18668 							}
18669 						}
18670 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
18671 						Z_ADDREF_P(value);
18672 					}
18673 				}
18674 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
18675 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18676 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18677 				}
18678 				goto exit_assign_obj;
18679 			}
18680 		}
18681 	}
18682 
18683 	if (!Z_OBJ_HT_P(object)->write_property) {
18684 		zend_string *property_name = zval_get_string(property);
18685 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
18686 		zend_string_release(property_name);
18687 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18688 			ZVAL_NULL(EX_VAR(opline->result.var));
18689 		}
18690 		zval_ptr_dtor_nogc(free_op_data);
18691 		goto exit_assign_obj;
18692 	}
18693 
18694 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
18695 		ZVAL_DEREF(value);
18696 	}
18697 
18698 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
18699 
18700 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18701 		ZVAL_COPY(EX_VAR(opline->result.var), value);
18702 	}
18703 	zval_ptr_dtor_nogc(free_op_data);
18704 exit_assign_obj:
18705 
18706 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18707 	/* assign_obj has two opcodes! */
18708 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
18709 }
18710 
18711 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18712 {
18713 	USE_OPLINE
18714 	zend_free_op free_op1, free_op_data;
18715 	zval *object, *property, *value, tmp;
18716 
18717 	SAVE_OPLINE();
18718 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18719 
18720 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
18721 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18722 	}
18723 
18724 	property = EX_CONSTANT(opline->op2);
18725 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
18726 
18727 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
18728 		do {
18729 			if (Z_ISREF_P(object)) {
18730 				object = Z_REFVAL_P(object);
18731 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
18732 					break;
18733 				}
18734 			}
18735 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
18736 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
18737 				zend_object *obj;
18738 
18739 				zval_ptr_dtor(object);
18740 				object_init(object);
18741 				Z_ADDREF_P(object);
18742 				obj = Z_OBJ_P(object);
18743 				zend_error(E_WARNING, "Creating default object from empty value");
18744 				if (GC_REFCOUNT(obj) == 1) {
18745 					/* the enclosing container was deleted, obj is unreferenced */
18746 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18747 						ZVAL_NULL(EX_VAR(opline->result.var));
18748 					}
18749 					zval_ptr_dtor_nogc(free_op_data);
18750 					OBJ_RELEASE(obj);
18751 					goto exit_assign_obj;
18752 				}
18753 				Z_DELREF_P(object);
18754 			} else {
18755 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
18756 					zend_string *property_name = zval_get_string(property);
18757 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
18758 					zend_string_release(property_name);
18759 				}
18760 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18761 					ZVAL_NULL(EX_VAR(opline->result.var));
18762 				}
18763 				zval_ptr_dtor_nogc(free_op_data);
18764 				goto exit_assign_obj;
18765 			}
18766 		} while (0);
18767 	}
18768 
18769 	if (IS_CONST == IS_CONST &&
18770 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
18771 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
18772 		zend_object *zobj = Z_OBJ_P(object);
18773 		zval *property_val;
18774 
18775 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
18776 			property_val = OBJ_PROP(zobj, prop_offset);
18777 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
18778 fast_assign_obj:
18779 				value = zend_assign_to_variable(property_val, value, IS_VAR);
18780 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18781 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18782 				}
18783 				goto exit_assign_obj;
18784 			}
18785 		} else {
18786 			if (EXPECTED(zobj->properties != NULL)) {
18787 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
18788 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
18789 						GC_REFCOUNT(zobj->properties)--;
18790 					}
18791 					zobj->properties = zend_array_dup(zobj->properties);
18792 				}
18793 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
18794 				if (property_val) {
18795 					goto fast_assign_obj;
18796 				}
18797 			}
18798 
18799 			if (!zobj->ce->__set) {
18800 
18801 				if (EXPECTED(zobj->properties == NULL)) {
18802 					rebuild_object_properties(zobj);
18803 				}
18804 				if (IS_VAR == IS_CONST) {
18805 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
18806 						Z_ADDREF_P(value);
18807 					}
18808 				} else if (IS_VAR != IS_TMP_VAR) {
18809 					if (Z_ISREF_P(value)) {
18810 						if (IS_VAR == IS_VAR) {
18811 							zend_reference *ref = Z_REF_P(value);
18812 							if (--GC_REFCOUNT(ref) == 0) {
18813 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
18814 								efree_size(ref, sizeof(zend_reference));
18815 								value = &tmp;
18816 							} else {
18817 								value = Z_REFVAL_P(value);
18818 								if (Z_REFCOUNTED_P(value)) {
18819 									Z_ADDREF_P(value);
18820 								}
18821 							}
18822 						} else {
18823 							value = Z_REFVAL_P(value);
18824 							if (Z_REFCOUNTED_P(value)) {
18825 								Z_ADDREF_P(value);
18826 							}
18827 						}
18828 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
18829 						Z_ADDREF_P(value);
18830 					}
18831 				}
18832 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
18833 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18834 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18835 				}
18836 				goto exit_assign_obj;
18837 			}
18838 		}
18839 	}
18840 
18841 	if (!Z_OBJ_HT_P(object)->write_property) {
18842 		zend_string *property_name = zval_get_string(property);
18843 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
18844 		zend_string_release(property_name);
18845 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18846 			ZVAL_NULL(EX_VAR(opline->result.var));
18847 		}
18848 		zval_ptr_dtor_nogc(free_op_data);
18849 		goto exit_assign_obj;
18850 	}
18851 
18852 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
18853 		ZVAL_DEREF(value);
18854 	}
18855 
18856 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
18857 
18858 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18859 		ZVAL_COPY(EX_VAR(opline->result.var), value);
18860 	}
18861 	zval_ptr_dtor_nogc(free_op_data);
18862 exit_assign_obj:
18863 
18864 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
18865 	/* assign_obj has two opcodes! */
18866 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
18867 }
18868 
18869 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
18870 {
18871 	USE_OPLINE
18872 	zend_free_op free_op1;
18873 	zval *object, *property, *value, tmp;
18874 
18875 	SAVE_OPLINE();
18876 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
18877 
18878 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
18879 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
18880 	}
18881 
18882 	property = EX_CONSTANT(opline->op2);
18883 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
18884 
18885 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
18886 		do {
18887 			if (Z_ISREF_P(object)) {
18888 				object = Z_REFVAL_P(object);
18889 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
18890 					break;
18891 				}
18892 			}
18893 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
18894 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
18895 				zend_object *obj;
18896 
18897 				zval_ptr_dtor(object);
18898 				object_init(object);
18899 				Z_ADDREF_P(object);
18900 				obj = Z_OBJ_P(object);
18901 				zend_error(E_WARNING, "Creating default object from empty value");
18902 				if (GC_REFCOUNT(obj) == 1) {
18903 					/* the enclosing container was deleted, obj is unreferenced */
18904 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18905 						ZVAL_NULL(EX_VAR(opline->result.var));
18906 					}
18907 
18908 					OBJ_RELEASE(obj);
18909 					goto exit_assign_obj;
18910 				}
18911 				Z_DELREF_P(object);
18912 			} else {
18913 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
18914 					zend_string *property_name = zval_get_string(property);
18915 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
18916 					zend_string_release(property_name);
18917 				}
18918 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18919 					ZVAL_NULL(EX_VAR(opline->result.var));
18920 				}
18921 
18922 				goto exit_assign_obj;
18923 			}
18924 		} while (0);
18925 	}
18926 
18927 	if (IS_CONST == IS_CONST &&
18928 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
18929 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
18930 		zend_object *zobj = Z_OBJ_P(object);
18931 		zval *property_val;
18932 
18933 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
18934 			property_val = OBJ_PROP(zobj, prop_offset);
18935 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
18936 fast_assign_obj:
18937 				value = zend_assign_to_variable(property_val, value, IS_CV);
18938 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18939 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18940 				}
18941 				goto exit_assign_obj;
18942 			}
18943 		} else {
18944 			if (EXPECTED(zobj->properties != NULL)) {
18945 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
18946 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
18947 						GC_REFCOUNT(zobj->properties)--;
18948 					}
18949 					zobj->properties = zend_array_dup(zobj->properties);
18950 				}
18951 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
18952 				if (property_val) {
18953 					goto fast_assign_obj;
18954 				}
18955 			}
18956 
18957 			if (!zobj->ce->__set) {
18958 
18959 				if (EXPECTED(zobj->properties == NULL)) {
18960 					rebuild_object_properties(zobj);
18961 				}
18962 				if (IS_CV == IS_CONST) {
18963 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
18964 						Z_ADDREF_P(value);
18965 					}
18966 				} else if (IS_CV != IS_TMP_VAR) {
18967 					if (Z_ISREF_P(value)) {
18968 						if (IS_CV == IS_VAR) {
18969 							zend_reference *ref = Z_REF_P(value);
18970 							if (--GC_REFCOUNT(ref) == 0) {
18971 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
18972 								efree_size(ref, sizeof(zend_reference));
18973 								value = &tmp;
18974 							} else {
18975 								value = Z_REFVAL_P(value);
18976 								if (Z_REFCOUNTED_P(value)) {
18977 									Z_ADDREF_P(value);
18978 								}
18979 							}
18980 						} else {
18981 							value = Z_REFVAL_P(value);
18982 							if (Z_REFCOUNTED_P(value)) {
18983 								Z_ADDREF_P(value);
18984 							}
18985 						}
18986 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
18987 						Z_ADDREF_P(value);
18988 					}
18989 				}
18990 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
18991 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
18992 					ZVAL_COPY(EX_VAR(opline->result.var), value);
18993 				}
18994 				goto exit_assign_obj;
18995 			}
18996 		}
18997 	}
18998 
18999 	if (!Z_OBJ_HT_P(object)->write_property) {
19000 		zend_string *property_name = zval_get_string(property);
19001 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
19002 		zend_string_release(property_name);
19003 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19004 			ZVAL_NULL(EX_VAR(opline->result.var));
19005 		}
19006 
19007 		goto exit_assign_obj;
19008 	}
19009 
19010 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
19011 		ZVAL_DEREF(value);
19012 	}
19013 
19014 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
19015 
19016 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19017 		ZVAL_COPY(EX_VAR(opline->result.var), value);
19018 	}
19019 
19020 exit_assign_obj:
19021 
19022 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19023 	/* assign_obj has two opcodes! */
19024 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
19025 }
19026 
19027 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19028 {
19029 	USE_OPLINE
19030 	zend_free_op free_op1;
19031 	zval *object_ptr;
19032 
19033 	zval *value;
19034 	zval *variable_ptr;
19035 	zval *dim;
19036 
19037 	SAVE_OPLINE();
19038 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19039 
19040 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19041 try_assign_dim_array:
19042 		SEPARATE_ARRAY(object_ptr);
19043 		if (IS_CONST == IS_UNUSED) {
19044 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
19045 			if (UNEXPECTED(variable_ptr == NULL)) {
19046 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
19047 				goto assign_dim_error;
19048 			}
19049 		} else {
19050 			dim = EX_CONSTANT(opline->op2);
19051 			if (IS_CONST == IS_CONST) {
19052 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19053 			} else {
19054 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19055 			}
19056 			if (UNEXPECTED(variable_ptr == NULL)) {
19057 				goto assign_dim_error;
19058 			}
19059 		}
19060 		value = EX_CONSTANT((opline+1)->op1);
19061 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
19062 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19063 			ZVAL_COPY(EX_VAR(opline->result.var), value);
19064 		}
19065 	} else {
19066 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
19067 			object_ptr = Z_REFVAL_P(object_ptr);
19068 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19069 				goto try_assign_dim_array;
19070 			}
19071 		}
19072 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
19073 			dim = EX_CONSTANT(opline->op2);
19074 			value = EX_CONSTANT((opline+1)->op1);
19075 
19076 			zend_assign_to_object_dim(object_ptr, dim, value);
19077 
19078 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19079 				ZVAL_COPY(EX_VAR(opline->result.var), value);
19080 			}
19081 
19082 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
19083 			if (IS_CONST == IS_UNUSED) {
19084 				zend_throw_error(NULL, "[] operator not supported for strings");
19085 
19086 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19087 				UNDEF_RESULT();
19088 				HANDLE_EXCEPTION();
19089 			} else {
19090 				dim = EX_CONSTANT(opline->op2);
19091 				value = EX_CONSTANT((opline+1)->op1);
19092 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
19093 
19094 			}
19095 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
19096 			ZVAL_NEW_ARR(object_ptr);
19097 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
19098 			goto try_assign_dim_array;
19099 		} else {
19100 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
19101 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
19102 			}
19103 			dim = EX_CONSTANT(opline->op2);
19104 assign_dim_error:
19105 
19106 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19107 				ZVAL_NULL(EX_VAR(opline->result.var));
19108 			}
19109 		}
19110 	}
19111 	if (IS_CONST != IS_UNUSED) {
19112 
19113 	}
19114 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19115 	/* assign_dim has two opcodes! */
19116 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
19117 }
19118 
19119 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19120 {
19121 	USE_OPLINE
19122 	zend_free_op free_op1;
19123 	zval *object_ptr;
19124 	zend_free_op free_op_data;
19125 	zval *value;
19126 	zval *variable_ptr;
19127 	zval *dim;
19128 
19129 	SAVE_OPLINE();
19130 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19131 
19132 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19133 try_assign_dim_array:
19134 		SEPARATE_ARRAY(object_ptr);
19135 		if (IS_CONST == IS_UNUSED) {
19136 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
19137 			if (UNEXPECTED(variable_ptr == NULL)) {
19138 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
19139 				goto assign_dim_error;
19140 			}
19141 		} else {
19142 			dim = EX_CONSTANT(opline->op2);
19143 			if (IS_CONST == IS_CONST) {
19144 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19145 			} else {
19146 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19147 			}
19148 			if (UNEXPECTED(variable_ptr == NULL)) {
19149 				goto assign_dim_error;
19150 			}
19151 		}
19152 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
19153 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
19154 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19155 			ZVAL_COPY(EX_VAR(opline->result.var), value);
19156 		}
19157 	} else {
19158 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
19159 			object_ptr = Z_REFVAL_P(object_ptr);
19160 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19161 				goto try_assign_dim_array;
19162 			}
19163 		}
19164 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
19165 			dim = EX_CONSTANT(opline->op2);
19166 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
19167 
19168 			zend_assign_to_object_dim(object_ptr, dim, value);
19169 
19170 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19171 				ZVAL_COPY(EX_VAR(opline->result.var), value);
19172 			}
19173 
19174 			zval_ptr_dtor_nogc(free_op_data);
19175 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
19176 			if (IS_CONST == IS_UNUSED) {
19177 				zend_throw_error(NULL, "[] operator not supported for strings");
19178 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
19179 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19180 				UNDEF_RESULT();
19181 				HANDLE_EXCEPTION();
19182 			} else {
19183 				dim = EX_CONSTANT(opline->op2);
19184 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
19185 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
19186 				zval_ptr_dtor_nogc(free_op_data);
19187 			}
19188 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
19189 			ZVAL_NEW_ARR(object_ptr);
19190 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
19191 			goto try_assign_dim_array;
19192 		} else {
19193 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
19194 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
19195 			}
19196 			dim = EX_CONSTANT(opline->op2);
19197 assign_dim_error:
19198 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
19199 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19200 				ZVAL_NULL(EX_VAR(opline->result.var));
19201 			}
19202 		}
19203 	}
19204 	if (IS_CONST != IS_UNUSED) {
19205 
19206 	}
19207 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19208 	/* assign_dim has two opcodes! */
19209 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
19210 }
19211 
19212 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19213 {
19214 	USE_OPLINE
19215 	zend_free_op free_op1;
19216 	zval *object_ptr;
19217 	zend_free_op free_op_data;
19218 	zval *value;
19219 	zval *variable_ptr;
19220 	zval *dim;
19221 
19222 	SAVE_OPLINE();
19223 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19224 
19225 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19226 try_assign_dim_array:
19227 		SEPARATE_ARRAY(object_ptr);
19228 		if (IS_CONST == IS_UNUSED) {
19229 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
19230 			if (UNEXPECTED(variable_ptr == NULL)) {
19231 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
19232 				goto assign_dim_error;
19233 			}
19234 		} else {
19235 			dim = EX_CONSTANT(opline->op2);
19236 			if (IS_CONST == IS_CONST) {
19237 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19238 			} else {
19239 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19240 			}
19241 			if (UNEXPECTED(variable_ptr == NULL)) {
19242 				goto assign_dim_error;
19243 			}
19244 		}
19245 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
19246 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
19247 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19248 			ZVAL_COPY(EX_VAR(opline->result.var), value);
19249 		}
19250 	} else {
19251 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
19252 			object_ptr = Z_REFVAL_P(object_ptr);
19253 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19254 				goto try_assign_dim_array;
19255 			}
19256 		}
19257 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
19258 			dim = EX_CONSTANT(opline->op2);
19259 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
19260 
19261 			zend_assign_to_object_dim(object_ptr, dim, value);
19262 
19263 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19264 				ZVAL_COPY(EX_VAR(opline->result.var), value);
19265 			}
19266 
19267 			zval_ptr_dtor_nogc(free_op_data);
19268 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
19269 			if (IS_CONST == IS_UNUSED) {
19270 				zend_throw_error(NULL, "[] operator not supported for strings");
19271 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
19272 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19273 				UNDEF_RESULT();
19274 				HANDLE_EXCEPTION();
19275 			} else {
19276 				dim = EX_CONSTANT(opline->op2);
19277 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
19278 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
19279 				zval_ptr_dtor_nogc(free_op_data);
19280 			}
19281 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
19282 			ZVAL_NEW_ARR(object_ptr);
19283 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
19284 			goto try_assign_dim_array;
19285 		} else {
19286 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
19287 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
19288 			}
19289 			dim = EX_CONSTANT(opline->op2);
19290 assign_dim_error:
19291 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
19292 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19293 				ZVAL_NULL(EX_VAR(opline->result.var));
19294 			}
19295 		}
19296 	}
19297 	if (IS_CONST != IS_UNUSED) {
19298 
19299 	}
19300 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19301 	/* assign_dim has two opcodes! */
19302 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
19303 }
19304 
19305 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19306 {
19307 	USE_OPLINE
19308 	zend_free_op free_op1;
19309 	zval *object_ptr;
19310 
19311 	zval *value;
19312 	zval *variable_ptr;
19313 	zval *dim;
19314 
19315 	SAVE_OPLINE();
19316 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19317 
19318 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19319 try_assign_dim_array:
19320 		SEPARATE_ARRAY(object_ptr);
19321 		if (IS_CONST == IS_UNUSED) {
19322 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
19323 			if (UNEXPECTED(variable_ptr == NULL)) {
19324 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
19325 				goto assign_dim_error;
19326 			}
19327 		} else {
19328 			dim = EX_CONSTANT(opline->op2);
19329 			if (IS_CONST == IS_CONST) {
19330 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19331 			} else {
19332 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
19333 			}
19334 			if (UNEXPECTED(variable_ptr == NULL)) {
19335 				goto assign_dim_error;
19336 			}
19337 		}
19338 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
19339 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
19340 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19341 			ZVAL_COPY(EX_VAR(opline->result.var), value);
19342 		}
19343 	} else {
19344 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
19345 			object_ptr = Z_REFVAL_P(object_ptr);
19346 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
19347 				goto try_assign_dim_array;
19348 			}
19349 		}
19350 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
19351 			dim = EX_CONSTANT(opline->op2);
19352 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
19353 
19354 			zend_assign_to_object_dim(object_ptr, dim, value);
19355 
19356 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19357 				ZVAL_COPY(EX_VAR(opline->result.var), value);
19358 			}
19359 
19360 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
19361 			if (IS_CONST == IS_UNUSED) {
19362 				zend_throw_error(NULL, "[] operator not supported for strings");
19363 
19364 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19365 				UNDEF_RESULT();
19366 				HANDLE_EXCEPTION();
19367 			} else {
19368 				dim = EX_CONSTANT(opline->op2);
19369 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
19370 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
19371 
19372 			}
19373 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
19374 			ZVAL_NEW_ARR(object_ptr);
19375 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
19376 			goto try_assign_dim_array;
19377 		} else {
19378 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
19379 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
19380 			}
19381 			dim = EX_CONSTANT(opline->op2);
19382 assign_dim_error:
19383 
19384 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
19385 				ZVAL_NULL(EX_VAR(opline->result.var));
19386 			}
19387 		}
19388 	}
19389 	if (IS_CONST != IS_UNUSED) {
19390 
19391 	}
19392 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19393 	/* assign_dim has two opcodes! */
19394 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
19395 }
19396 
19397 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19398 {
19399 	USE_OPLINE
19400 	zend_free_op free_op1;
19401 	zval *value;
19402 	zval *variable_ptr;
19403 
19404 	SAVE_OPLINE();
19405 	value = EX_CONSTANT(opline->op2);
19406 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19407 
19408 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
19409 
19410 		if (UNEXPECTED(0)) {
19411 			ZVAL_NULL(EX_VAR(opline->result.var));
19412 		}
19413 	} else {
19414 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
19415 		if (UNEXPECTED(0)) {
19416 			ZVAL_COPY(EX_VAR(opline->result.var), value);
19417 		}
19418 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19419 		/* zend_assign_to_variable() always takes care of op2, never free it! */
19420 	}
19421 
19422 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19423 }
19424 
19425 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19426 {
19427 	USE_OPLINE
19428 	zend_free_op free_op1;
19429 	zval *value;
19430 	zval *variable_ptr;
19431 
19432 	SAVE_OPLINE();
19433 	value = EX_CONSTANT(opline->op2);
19434 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19435 
19436 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
19437 
19438 		if (UNEXPECTED(1)) {
19439 			ZVAL_NULL(EX_VAR(opline->result.var));
19440 		}
19441 	} else {
19442 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
19443 		if (UNEXPECTED(1)) {
19444 			ZVAL_COPY(EX_VAR(opline->result.var), value);
19445 		}
19446 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19447 		/* zend_assign_to_variable() always takes care of op2, never free it! */
19448 	}
19449 
19450 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19451 }
19452 
19453 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19454 {
19455 	USE_OPLINE
19456 	zval *function_name;
19457 	zend_class_entry *ce;
19458 	zend_object *object;
19459 	zend_function *fbc;
19460 	zend_execute_data *call;
19461 
19462 	SAVE_OPLINE();
19463 
19464 	if (IS_VAR == IS_CONST) {
19465 		/* no function found. try a static method in class */
19466 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
19467 		if (UNEXPECTED(ce == NULL)) {
19468 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
19469 			if (UNEXPECTED(ce == NULL)) {
19470 				ZEND_ASSERT(EG(exception));
19471 
19472 				HANDLE_EXCEPTION();
19473 			}
19474 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
19475 		}
19476 	} else if (IS_VAR == IS_UNUSED) {
19477 		ce = zend_fetch_class(NULL, opline->op1.num);
19478 		if (UNEXPECTED(ce == NULL)) {
19479 			ZEND_ASSERT(EG(exception));
19480 
19481 			HANDLE_EXCEPTION();
19482 		}
19483 	} else {
19484 		ce = Z_CE_P(EX_VAR(opline->op1.var));
19485 	}
19486 
19487 	if (IS_VAR == IS_CONST &&
19488 	    IS_CONST == IS_CONST &&
19489 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
19490 		/* nothing to do */
19491 	} else if (IS_VAR != IS_CONST &&
19492 	           IS_CONST == IS_CONST &&
19493 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
19494 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
19495 	} else if (IS_CONST != IS_UNUSED) {
19496 
19497 
19498 		function_name = EX_CONSTANT(opline->op2);
19499 		if (IS_CONST != IS_CONST) {
19500 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
19501 				do {
19502 					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
19503 						function_name = Z_REFVAL_P(function_name);
19504 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
19505 							break;
19506 						}
19507 					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
19508 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
19509 						if (UNEXPECTED(EG(exception) != NULL)) {
19510 							HANDLE_EXCEPTION();
19511 						}
19512 					}
19513 					zend_throw_error(NULL, "Function name must be a string");
19514 
19515 					HANDLE_EXCEPTION();
19516 				} while (0);
19517  			}
19518 		}
19519 
19520 		if (ce->get_static_method) {
19521 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
19522 		} else {
19523 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
19524 		}
19525 		if (UNEXPECTED(fbc == NULL)) {
19526 			if (EXPECTED(!EG(exception))) {
19527 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
19528 			}
19529 
19530 			HANDLE_EXCEPTION();
19531 		}
19532 		if (IS_CONST == IS_CONST &&
19533 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
19534 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
19535 			if (IS_VAR == IS_CONST) {
19536 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
19537 			} else {
19538 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
19539 			}
19540 		}
19541 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
19542 			init_func_run_time_cache(&fbc->op_array);
19543 		}
19544 		if (IS_CONST != IS_CONST) {
19545 
19546 		}
19547 	} else {
19548 		if (UNEXPECTED(ce->constructor == NULL)) {
19549 			zend_throw_error(NULL, "Cannot call constructor");
19550 			HANDLE_EXCEPTION();
19551 		}
19552 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
19553 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
19554 			HANDLE_EXCEPTION();
19555 		}
19556 		fbc = ce->constructor;
19557 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
19558 			init_func_run_time_cache(&fbc->op_array);
19559 		}
19560 	}
19561 
19562 	object = NULL;
19563 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
19564 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
19565 			object = Z_OBJ(EX(This));
19566 			ce = object->ce;
19567 		} else {
19568 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
19569 				/* Allowed for PHP 4 compatibility. */
19570 				zend_error(
19571 					E_DEPRECATED,
19572 					"Non-static method %s::%s() should not be called statically",
19573 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
19574 				if (UNEXPECTED(EG(exception) != NULL)) {
19575 					HANDLE_EXCEPTION();
19576 				}
19577 			} else {
19578 				/* An internal function assumes $this is present and won't check that.
19579 				 * So PHP would crash by allowing the call. */
19580 				zend_throw_error(
19581 					zend_ce_error,
19582 					"Non-static method %s::%s() cannot be called statically",
19583 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
19584 				HANDLE_EXCEPTION();
19585 			}
19586 		}
19587 	}
19588 
19589 	if (IS_VAR == IS_UNUSED) {
19590 		/* previous opcode is ZEND_FETCH_CLASS */
19591 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
19592 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
19593 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
19594 				ce = Z_OBJCE(EX(This));
19595 			} else {
19596 				ce = Z_CE(EX(This));
19597 			}
19598 		}
19599 	}
19600 
19601 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
19602 		fbc, opline->extended_value, ce, object);
19603 	call->prev_execute_data = EX(call);
19604 	EX(call) = call;
19605 
19606 	ZEND_VM_NEXT_OPCODE();
19607 }
19608 
19609 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19610 {
19611 	zend_class_entry *ce, *scope;
19612 	zend_class_constant *c;
19613 	zval *value;
19614 	USE_OPLINE
19615 
19616 	SAVE_OPLINE();
19617 
19618 	do {
19619 		if (IS_VAR == IS_CONST) {
19620 			if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))))) {
19621 				value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
19622 #ifdef ZTS
19623 				ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
19624 #endif
19625 				break;
19626 			} else if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))))) {
19627 				ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
19628 			} else {
19629 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
19630 				if (UNEXPECTED(ce == NULL)) {
19631 					ZEND_ASSERT(EG(exception));
19632 					ZVAL_UNDEF(EX_VAR(opline->result.var));
19633 					HANDLE_EXCEPTION();
19634 				}
19635 				CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
19636 			}
19637 		} else {
19638 			if (IS_VAR == IS_UNUSED) {
19639 				ce = zend_fetch_class(NULL, opline->op1.num);
19640 				if (UNEXPECTED(ce == NULL)) {
19641 					ZEND_ASSERT(EG(exception));
19642 					ZVAL_UNDEF(EX_VAR(opline->result.var));
19643 					HANDLE_EXCEPTION();
19644 				}
19645 			} else {
19646 				ce = Z_CE_P(EX_VAR(opline->op1.var));
19647 			}
19648 			if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
19649 				value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
19650 				break;
19651 			}
19652 		}
19653 
19654 		if (EXPECTED((c = zend_hash_find_ptr(&ce->constants_table, Z_STR_P(EX_CONSTANT(opline->op2)))) != NULL)) {
19655 			scope = EX(func)->op_array.scope;
19656 			if (!zend_verify_const_access(c, scope)) {
19657 				zend_throw_error(NULL, "Cannot access %s const %s::%s", zend_visibility_string(Z_ACCESS_FLAGS(c->value)), ZSTR_VAL(ce->name), Z_STRVAL_P(EX_CONSTANT(opline->op2)));
19658 				ZVAL_UNDEF(EX_VAR(opline->result.var));
19659 				HANDLE_EXCEPTION();
19660 			}
19661 			value = &c->value;
19662 			if (Z_CONSTANT_P(value)) {
19663 				zval_update_constant_ex(value, c->ce);
19664 				if (UNEXPECTED(EG(exception) != NULL)) {
19665 					ZVAL_UNDEF(EX_VAR(opline->result.var));
19666 					HANDLE_EXCEPTION();
19667 				}
19668 			}
19669 			if (IS_VAR == IS_CONST) {
19670 				CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), value);
19671 			} else {
19672 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce, value);
19673 			}
19674 		} else {
19675 			zend_throw_error(NULL, "Undefined class constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2)));
19676 			ZVAL_UNDEF(EX_VAR(opline->result.var));
19677 			HANDLE_EXCEPTION();
19678 		}
19679 	} while (0);
19680 
19681 #ifdef ZTS
19682 	if (ce->type == ZEND_INTERNAL_CLASS) {
19683 		ZVAL_DUP(EX_VAR(opline->result.var), value);
19684 	} else {
19685 		ZVAL_COPY(EX_VAR(opline->result.var), value);
19686 	}
19687 #else
19688 	ZVAL_COPY(EX_VAR(opline->result.var), value);
19689 #endif
19690 
19691 	ZEND_VM_NEXT_OPCODE();
19692 }
19693 
19694 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19695 {
19696 	USE_OPLINE
19697 	zend_free_op free_op1;
19698 	zval *expr_ptr, new_expr;
19699 
19700 	SAVE_OPLINE();
19701 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
19702 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
19703 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19704 		ZVAL_MAKE_REF(expr_ptr);
19705 		Z_ADDREF_P(expr_ptr);
19706 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19707 	} else {
19708 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19709 		if (IS_VAR == IS_TMP_VAR) {
19710 			/* pass */
19711 		} else if (IS_VAR == IS_CONST) {
19712 			if (Z_REFCOUNTED_P(expr_ptr)) {
19713 				Z_ADDREF_P(expr_ptr);
19714 			}
19715 		} else if (IS_VAR == IS_CV) {
19716 			ZVAL_DEREF(expr_ptr);
19717 			if (Z_REFCOUNTED_P(expr_ptr)) {
19718 				Z_ADDREF_P(expr_ptr);
19719 			}
19720 		} else /* if (IS_VAR == IS_VAR) */ {
19721 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
19722 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
19723 
19724 				expr_ptr = Z_REFVAL_P(expr_ptr);
19725 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
19726 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
19727 					expr_ptr = &new_expr;
19728 					efree_size(ref, sizeof(zend_reference));
19729 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
19730 					Z_ADDREF_P(expr_ptr);
19731 				}
19732 			}
19733 		}
19734 	}
19735 
19736 	if (IS_CONST != IS_UNUSED) {
19737 
19738 		zval *offset = EX_CONSTANT(opline->op2);
19739 		zend_string *str;
19740 		zend_ulong hval;
19741 
19742 add_again:
19743 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
19744 			str = Z_STR_P(offset);
19745 			if (IS_CONST != IS_CONST) {
19746 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
19747 					goto num_index;
19748 				}
19749 			}
19750 str_index:
19751 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
19752 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
19753 			hval = Z_LVAL_P(offset);
19754 num_index:
19755 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
19756 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
19757 			offset = Z_REFVAL_P(offset);
19758 			goto add_again;
19759 		} else if (Z_TYPE_P(offset) == IS_NULL) {
19760 			str = ZSTR_EMPTY_ALLOC();
19761 			goto str_index;
19762 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
19763 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
19764 			goto num_index;
19765 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
19766 			hval = 0;
19767 			goto num_index;
19768 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
19769 			hval = 1;
19770 			goto num_index;
19771 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
19772 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
19773 			str = ZSTR_EMPTY_ALLOC();
19774 			goto str_index;
19775 		} else {
19776 			zend_error(E_WARNING, "Illegal offset type");
19777 			zval_ptr_dtor(expr_ptr);
19778 		}
19779 
19780 	} else {
19781 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
19782 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
19783 			zval_ptr_dtor(expr_ptr);
19784 		}
19785 	}
19786 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19787 }
19788 
19789 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19790 {
19791 	zval *array;
19792 	uint32_t size;
19793 	USE_OPLINE
19794 
19795 	array = EX_VAR(opline->result.var);
19796 	if (IS_VAR != IS_UNUSED) {
19797 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
19798 	} else {
19799 		size = 0;
19800 	}
19801 	ZVAL_NEW_ARR(array);
19802 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
19803 
19804 	if (IS_VAR != IS_UNUSED) {
19805 		/* Explicitly initialize array as not-packed if flag is set */
19806 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
19807 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
19808 		}
19809 	}
19810 
19811 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19812 }
19813 
19814 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19815 {
19816 	USE_OPLINE
19817 	zend_free_op free_op1;
19818 	zval *container;
19819 	zval *offset;
19820 	zend_ulong hval;
19821 	zend_string *key;
19822 
19823 	SAVE_OPLINE();
19824 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19825 	offset = EX_CONSTANT(opline->op2);
19826 
19827 	do {
19828 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
19829 			HashTable *ht;
19830 
19831 unset_dim_array:
19832 			SEPARATE_ARRAY(container);
19833 			ht = Z_ARRVAL_P(container);
19834 offset_again:
19835 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
19836 				key = Z_STR_P(offset);
19837 				if (IS_CONST != IS_CONST) {
19838 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
19839 						goto num_index_dim;
19840 					}
19841 				}
19842 str_index_dim:
19843 				if (ht == &EG(symbol_table)) {
19844 					zend_delete_global_variable(key);
19845 				} else {
19846 					zend_hash_del(ht, key);
19847 				}
19848 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
19849 				hval = Z_LVAL_P(offset);
19850 num_index_dim:
19851 				zend_hash_index_del(ht, hval);
19852 			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
19853 				offset = Z_REFVAL_P(offset);
19854 				goto offset_again;
19855 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
19856 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
19857 				goto num_index_dim;
19858 			} else if (Z_TYPE_P(offset) == IS_NULL) {
19859 				key = ZSTR_EMPTY_ALLOC();
19860 				goto str_index_dim;
19861 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
19862 				hval = 0;
19863 				goto num_index_dim;
19864 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
19865 				hval = 1;
19866 				goto num_index_dim;
19867 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
19868 				hval = Z_RES_HANDLE_P(offset);
19869 				goto num_index_dim;
19870 			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
19871 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
19872 				key = ZSTR_EMPTY_ALLOC();
19873 				goto str_index_dim;
19874 			} else {
19875 				zend_error(E_WARNING, "Illegal offset type in unset");
19876 			}
19877 			break;
19878 		} else if (Z_ISREF_P(container)) {
19879 			container = Z_REFVAL_P(container);
19880 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
19881 				goto unset_dim_array;
19882 			}
19883 		}
19884 		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
19885 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
19886 		}
19887 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
19888 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
19889 		}
19890 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
19891 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
19892 				zend_throw_error(NULL, "Cannot use object as array");
19893 			} else {
19894 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
19895 			}
19896 		} else if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
19897 			zend_throw_error(NULL, "Cannot unset string offsets");
19898 		}
19899 	} while (0);
19900 
19901 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19902 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19903 }
19904 
19905 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19906 {
19907 	USE_OPLINE
19908 	zend_free_op free_op1;
19909 	zval *container;
19910 	zval *offset;
19911 
19912 	SAVE_OPLINE();
19913 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19914 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
19915 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
19916 	}
19917 	offset = EX_CONSTANT(opline->op2);
19918 
19919 	do {
19920 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
19921 			if (Z_ISREF_P(container)) {
19922 				container = Z_REFVAL_P(container);
19923 				if (Z_TYPE_P(container) != IS_OBJECT) {
19924 					break;
19925 				}
19926 			} else {
19927 				break;
19928 			}
19929 		}
19930 		if (Z_OBJ_HT_P(container)->unset_property) {
19931 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
19932 		} else {
19933 			zend_string *property_name = zval_get_string(offset);
19934 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
19935 			zend_string_release(property_name);
19936 		}
19937 	} while (0);
19938 
19939 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19940 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
19941 }
19942 
19943 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
19944 {
19945 	USE_OPLINE
19946 
19947 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
19948 
19949 	SAVE_OPLINE();
19950 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
19951 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
19952 
19953 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
19954 		UNDEF_RESULT();
19955 		HANDLE_EXCEPTION();
19956 	}
19957 
19958 	/* Destroy the previously yielded value */
19959 	zval_ptr_dtor(&generator->value);
19960 
19961 	/* Destroy the previously yielded key */
19962 	zval_ptr_dtor(&generator->key);
19963 
19964 	/* Set the new yielded value */
19965 	if (IS_VAR != IS_UNUSED) {
19966 		zend_free_op free_op1;
19967 
19968 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
19969 			/* Constants and temporary variables aren't yieldable by reference,
19970 			 * but we still allow them with a notice. */
19971 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
19972 				zval *value;
19973 
19974 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19975 
19976 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19977 				ZVAL_COPY_VALUE(&generator->value, value);
19978 				if (IS_VAR == IS_CONST) {
19979 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
19980 						Z_ADDREF(generator->value);
19981 					}
19982 				}
19983 			} else {
19984 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
19985 
19986 				/* If a function call result is yielded and the function did
19987 				 * not return by reference we throw a notice. */
19988 				if (IS_VAR == IS_VAR &&
19989 				    (value_ptr == &EG(uninitialized_zval) ||
19990 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
19991 				      !Z_ISREF_P(value_ptr)))) {
19992 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
19993 				} else {
19994 					ZVAL_MAKE_REF(value_ptr);
19995 				}
19996 				ZVAL_COPY(&generator->value, value_ptr);
19997 
19998 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
19999 			}
20000 		} else {
20001 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20002 
20003 			/* Consts, temporary variables and references need copying */
20004 			if (IS_VAR == IS_CONST) {
20005 				ZVAL_COPY_VALUE(&generator->value, value);
20006 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
20007 					Z_ADDREF(generator->value);
20008 				}
20009 			} else if (IS_VAR == IS_TMP_VAR) {
20010 				ZVAL_COPY_VALUE(&generator->value, value);
20011             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
20012 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
20013 				zval_ptr_dtor_nogc(free_op1);
20014 			} else {
20015 				ZVAL_COPY_VALUE(&generator->value, value);
20016 				if (IS_VAR == IS_CV) {
20017 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
20018 				}
20019 			}
20020 		}
20021 	} else {
20022 		/* If no value was specified yield null */
20023 		ZVAL_NULL(&generator->value);
20024 	}
20025 
20026 	/* Set the new yielded key */
20027 	if (IS_CONST != IS_UNUSED) {
20028 
20029 		zval *key = EX_CONSTANT(opline->op2);
20030 
20031 		/* Consts, temporary variables and references need copying */
20032 		if (IS_CONST == IS_CONST) {
20033 			ZVAL_COPY_VALUE(&generator->key, key);
20034 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
20035 				Z_ADDREF(generator->key);
20036 			}
20037 		} else if (IS_CONST == IS_TMP_VAR) {
20038 			ZVAL_COPY_VALUE(&generator->key, key);
20039 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
20040 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
20041 
20042 		} else {
20043 			ZVAL_COPY_VALUE(&generator->key, key);
20044 			if (IS_CONST == IS_CV) {
20045 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
20046 			}
20047 		}
20048 
20049 		if (Z_TYPE(generator->key) == IS_LONG
20050 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
20051 		) {
20052 			generator->largest_used_integer_key = Z_LVAL(generator->key);
20053 		}
20054 	} else {
20055 		/* If no key was specified we use auto-increment keys */
20056 		generator->largest_used_integer_key++;
20057 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
20058 	}
20059 
20060 	if (RETURN_VALUE_USED(opline)) {
20061 		/* If the return value of yield is used set the send
20062 		 * target and initialize it to NULL */
20063 		generator->send_target = EX_VAR(opline->result.var);
20064 		ZVAL_NULL(generator->send_target);
20065 	} else {
20066 		generator->send_target = NULL;
20067 	}
20068 
20069 	/* We increment to the next op, so we are at the correct position when the
20070 	 * generator is resumed. */
20071 	ZEND_VM_INC_OPCODE();
20072 
20073 	/* The GOTO VM uses a local opline variable. We need to set the opline
20074 	 * variable in execute_data so we don't resume at an old position. */
20075 	SAVE_OPLINE();
20076 
20077 	ZEND_VM_RETURN();
20078 }
20079 
20080 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20081 {
20082 	USE_OPLINE
20083 	zend_free_op free_op1;
20084 	zval *op1;
20085 	HashTable *ht = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
20086 	int result;
20087 
20088 	SAVE_OPLINE();
20089 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20090 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
20091 		result = zend_hash_exists(ht, Z_STR_P(op1));
20092 	} else if (opline->extended_value) {
20093 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
20094 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
20095 		} else {
20096 			result = 0;
20097 		}
20098 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
20099 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
20100 	} else {
20101 		zend_string *key;
20102 		zval key_tmp, result_tmp;
20103 
20104 		result = 0;
20105 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
20106 			ZVAL_STR(&key_tmp, key);
20107 			compare_function(&result_tmp, op1, &key_tmp);
20108 			if (Z_LVAL(result_tmp) == 0) {
20109 				result = 1;
20110 				break;
20111 			}
20112 		} ZEND_HASH_FOREACH_END();
20113 	}
20114 	zval_ptr_dtor_nogc(free_op1);
20115 	ZEND_VM_SMART_BRANCH(result, 1);
20116 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
20117 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20118 }
20119 
20120 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20121 {
20122 	USE_OPLINE
20123 	zend_free_op free_op1, free_op2;
20124 	zval *op1, *op2;
20125 	int result;
20126 
20127 	SAVE_OPLINE();
20128 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20129 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20130 	result = fast_is_identical_function(op1, op2);
20131 	zval_ptr_dtor_nogc(free_op1);
20132 	zval_ptr_dtor_nogc(free_op2);
20133 	ZEND_VM_SMART_BRANCH(result, 1);
20134 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
20135 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20136 }
20137 
20138 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20139 {
20140 	USE_OPLINE
20141 	zend_free_op free_op1, free_op2;
20142 	zval *op1, *op2;
20143 	int result;
20144 
20145 	SAVE_OPLINE();
20146 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20147 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20148 	result = fast_is_not_identical_function(op1, op2);
20149 	zval_ptr_dtor_nogc(free_op1);
20150 	zval_ptr_dtor_nogc(free_op2);
20151 	ZEND_VM_SMART_BRANCH(result, 1);
20152 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
20153 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20154 }
20155 
20156 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20157 {
20158 	USE_OPLINE
20159 	zend_free_op free_op1, free_op2;
20160 	zval *value;
20161 	zval *variable_ptr;
20162 
20163 	SAVE_OPLINE();
20164 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20165 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20166 
20167 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
20168 		zval_ptr_dtor_nogc(free_op2);
20169 		if (UNEXPECTED(0)) {
20170 			ZVAL_NULL(EX_VAR(opline->result.var));
20171 		}
20172 	} else {
20173 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
20174 		if (UNEXPECTED(0)) {
20175 			ZVAL_COPY(EX_VAR(opline->result.var), value);
20176 		}
20177 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20178 		/* zend_assign_to_variable() always takes care of op2, never free it! */
20179 	}
20180 
20181 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20182 }
20183 
20184 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20185 {
20186 	USE_OPLINE
20187 	zend_free_op free_op1, free_op2;
20188 	zval *value;
20189 	zval *variable_ptr;
20190 
20191 	SAVE_OPLINE();
20192 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20193 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20194 
20195 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
20196 		zval_ptr_dtor_nogc(free_op2);
20197 		if (UNEXPECTED(1)) {
20198 			ZVAL_NULL(EX_VAR(opline->result.var));
20199 		}
20200 	} else {
20201 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
20202 		if (UNEXPECTED(1)) {
20203 			ZVAL_COPY(EX_VAR(opline->result.var), value);
20204 		}
20205 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20206 		/* zend_assign_to_variable() always takes care of op2, never free it! */
20207 	}
20208 
20209 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20210 }
20211 
20212 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20213 {
20214 	USE_OPLINE
20215 
20216 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
20217 
20218 	SAVE_OPLINE();
20219 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
20220 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
20221 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
20222 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
20223 		UNDEF_RESULT();
20224 		HANDLE_EXCEPTION();
20225 	}
20226 
20227 	/* Destroy the previously yielded value */
20228 	zval_ptr_dtor(&generator->value);
20229 
20230 	/* Destroy the previously yielded key */
20231 	zval_ptr_dtor(&generator->key);
20232 
20233 	/* Set the new yielded value */
20234 	if (IS_VAR != IS_UNUSED) {
20235 		zend_free_op free_op1;
20236 
20237 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
20238 			/* Constants and temporary variables aren't yieldable by reference,
20239 			 * but we still allow them with a notice. */
20240 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
20241 				zval *value;
20242 
20243 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
20244 
20245 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20246 				ZVAL_COPY_VALUE(&generator->value, value);
20247 				if (IS_VAR == IS_CONST) {
20248 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
20249 						Z_ADDREF(generator->value);
20250 					}
20251 				}
20252 			} else {
20253 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20254 
20255 				/* If a function call result is yielded and the function did
20256 				 * not return by reference we throw a notice. */
20257 				if (IS_VAR == IS_VAR &&
20258 				    (value_ptr == &EG(uninitialized_zval) ||
20259 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
20260 				      !Z_ISREF_P(value_ptr)))) {
20261 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
20262 				} else {
20263 					ZVAL_MAKE_REF(value_ptr);
20264 				}
20265 				ZVAL_COPY(&generator->value, value_ptr);
20266 
20267 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20268 			}
20269 		} else {
20270 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20271 
20272 			/* Consts, temporary variables and references need copying */
20273 			if (IS_VAR == IS_CONST) {
20274 				ZVAL_COPY_VALUE(&generator->value, value);
20275 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
20276 					Z_ADDREF(generator->value);
20277 				}
20278 			} else if (IS_VAR == IS_TMP_VAR) {
20279 				ZVAL_COPY_VALUE(&generator->value, value);
20280             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
20281 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
20282 				zval_ptr_dtor_nogc(free_op1);
20283 			} else {
20284 				ZVAL_COPY_VALUE(&generator->value, value);
20285 				if (IS_VAR == IS_CV) {
20286 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
20287 				}
20288 			}
20289 		}
20290 	} else {
20291 		/* If no value was specified yield null */
20292 		ZVAL_NULL(&generator->value);
20293 	}
20294 
20295 	/* Set the new yielded key */
20296 	if (IS_TMP_VAR != IS_UNUSED) {
20297 		zend_free_op free_op2;
20298 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20299 
20300 		/* Consts, temporary variables and references need copying */
20301 		if (IS_TMP_VAR == IS_CONST) {
20302 			ZVAL_COPY_VALUE(&generator->key, key);
20303 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
20304 				Z_ADDREF(generator->key);
20305 			}
20306 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
20307 			ZVAL_COPY_VALUE(&generator->key, key);
20308 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
20309 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
20310 
20311 		} else {
20312 			ZVAL_COPY_VALUE(&generator->key, key);
20313 			if (IS_TMP_VAR == IS_CV) {
20314 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
20315 			}
20316 		}
20317 
20318 		if (Z_TYPE(generator->key) == IS_LONG
20319 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
20320 		) {
20321 			generator->largest_used_integer_key = Z_LVAL(generator->key);
20322 		}
20323 	} else {
20324 		/* If no key was specified we use auto-increment keys */
20325 		generator->largest_used_integer_key++;
20326 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
20327 	}
20328 
20329 	if (RETURN_VALUE_USED(opline)) {
20330 		/* If the return value of yield is used set the send
20331 		 * target and initialize it to NULL */
20332 		generator->send_target = EX_VAR(opline->result.var);
20333 		ZVAL_NULL(generator->send_target);
20334 	} else {
20335 		generator->send_target = NULL;
20336 	}
20337 
20338 	/* We increment to the next op, so we are at the correct position when the
20339 	 * generator is resumed. */
20340 	ZEND_VM_INC_OPCODE();
20341 
20342 	/* The GOTO VM uses a local opline variable. We need to set the opline
20343 	 * variable in execute_data so we don't resume at an old position. */
20344 	SAVE_OPLINE();
20345 
20346 	ZEND_VM_RETURN();
20347 }
20348 
20349 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20350 {
20351 	USE_OPLINE
20352 	zend_free_op free_op1, free_op2;
20353 	zval *op1, *op2;
20354 	int result;
20355 
20356 	SAVE_OPLINE();
20357 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20358 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20359 	result = fast_is_identical_function(op1, op2);
20360 	zval_ptr_dtor_nogc(free_op1);
20361 	zval_ptr_dtor_nogc(free_op2);
20362 	ZEND_VM_SMART_BRANCH(result, 1);
20363 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
20364 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20365 }
20366 
20367 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20368 {
20369 	USE_OPLINE
20370 	zend_free_op free_op1, free_op2;
20371 	zval *op1, *op2;
20372 	int result;
20373 
20374 	SAVE_OPLINE();
20375 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20376 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20377 	result = fast_is_not_identical_function(op1, op2);
20378 	zval_ptr_dtor_nogc(free_op1);
20379 	zval_ptr_dtor_nogc(free_op2);
20380 	ZEND_VM_SMART_BRANCH(result, 1);
20381 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
20382 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20383 }
20384 
20385 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20386 {
20387 	USE_OPLINE
20388 	zend_free_op free_op1, free_op2;
20389 	zval *value;
20390 	zval *variable_ptr;
20391 
20392 	SAVE_OPLINE();
20393 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20394 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20395 
20396 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
20397 		zval_ptr_dtor_nogc(free_op2);
20398 		if (UNEXPECTED(0)) {
20399 			ZVAL_NULL(EX_VAR(opline->result.var));
20400 		}
20401 	} else {
20402 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
20403 		if (UNEXPECTED(0)) {
20404 			ZVAL_COPY(EX_VAR(opline->result.var), value);
20405 		}
20406 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20407 		/* zend_assign_to_variable() always takes care of op2, never free it! */
20408 	}
20409 
20410 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20411 }
20412 
20413 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20414 {
20415 	USE_OPLINE
20416 	zend_free_op free_op1, free_op2;
20417 	zval *value;
20418 	zval *variable_ptr;
20419 
20420 	SAVE_OPLINE();
20421 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20422 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20423 
20424 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
20425 		zval_ptr_dtor_nogc(free_op2);
20426 		if (UNEXPECTED(1)) {
20427 			ZVAL_NULL(EX_VAR(opline->result.var));
20428 		}
20429 	} else {
20430 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
20431 		if (UNEXPECTED(1)) {
20432 			ZVAL_COPY(EX_VAR(opline->result.var), value);
20433 		}
20434 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20435 		/* zend_assign_to_variable() always takes care of op2, never free it! */
20436 	}
20437 
20438 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20439 }
20440 
20441 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20442 {
20443 	USE_OPLINE
20444 	zend_free_op free_op1, free_op2;
20445 	zval *variable_ptr;
20446 	zval *value_ptr;
20447 
20448 	SAVE_OPLINE();
20449 	value_ptr = _get_zval_ptr_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20450 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20451 
20452 	if (IS_VAR == IS_VAR &&
20453 	    UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
20454 	    UNEXPECTED(!Z_ISREF_P(EX_VAR(opline->op1.var))) &&
20455 	    UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
20456 
20457 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
20458 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20459 		if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
20460 		UNDEF_RESULT();
20461 		HANDLE_EXCEPTION();
20462 
20463 	} else if (IS_VAR == IS_VAR &&
20464 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
20465 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
20466 		zend_error(E_NOTICE, "Only variables should be assigned by reference");
20467 		if (UNEXPECTED(EG(exception) != NULL)) {
20468 			if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
20469 			UNDEF_RESULT();
20470 			HANDLE_EXCEPTION();
20471 		}
20472 
20473 		value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_VAR);
20474 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
20475 			ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
20476 		}
20477 		/* zend_assign_to_variable() always takes care of op2, never free it! */
20478 
20479 	} else {
20480 
20481 		if ((IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
20482 		    (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
20483 			variable_ptr = &EG(uninitialized_zval);
20484 		} else {
20485 			zend_assign_to_variable_reference(variable_ptr, value_ptr);
20486 		}
20487 
20488 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
20489 			ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
20490 		}
20491 
20492 		if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
20493 	}
20494 
20495 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20496 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20497 }
20498 
20499 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20500 {
20501 	USE_OPLINE
20502 
20503 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
20504 
20505 	SAVE_OPLINE();
20506 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
20507 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
20508 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
20509 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
20510 		UNDEF_RESULT();
20511 		HANDLE_EXCEPTION();
20512 	}
20513 
20514 	/* Destroy the previously yielded value */
20515 	zval_ptr_dtor(&generator->value);
20516 
20517 	/* Destroy the previously yielded key */
20518 	zval_ptr_dtor(&generator->key);
20519 
20520 	/* Set the new yielded value */
20521 	if (IS_VAR != IS_UNUSED) {
20522 		zend_free_op free_op1;
20523 
20524 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
20525 			/* Constants and temporary variables aren't yieldable by reference,
20526 			 * but we still allow them with a notice. */
20527 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
20528 				zval *value;
20529 
20530 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
20531 
20532 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20533 				ZVAL_COPY_VALUE(&generator->value, value);
20534 				if (IS_VAR == IS_CONST) {
20535 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
20536 						Z_ADDREF(generator->value);
20537 					}
20538 				}
20539 			} else {
20540 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20541 
20542 				/* If a function call result is yielded and the function did
20543 				 * not return by reference we throw a notice. */
20544 				if (IS_VAR == IS_VAR &&
20545 				    (value_ptr == &EG(uninitialized_zval) ||
20546 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
20547 				      !Z_ISREF_P(value_ptr)))) {
20548 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
20549 				} else {
20550 					ZVAL_MAKE_REF(value_ptr);
20551 				}
20552 				ZVAL_COPY(&generator->value, value_ptr);
20553 
20554 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20555 			}
20556 		} else {
20557 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20558 
20559 			/* Consts, temporary variables and references need copying */
20560 			if (IS_VAR == IS_CONST) {
20561 				ZVAL_COPY_VALUE(&generator->value, value);
20562 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
20563 					Z_ADDREF(generator->value);
20564 				}
20565 			} else if (IS_VAR == IS_TMP_VAR) {
20566 				ZVAL_COPY_VALUE(&generator->value, value);
20567             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
20568 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
20569 				zval_ptr_dtor_nogc(free_op1);
20570 			} else {
20571 				ZVAL_COPY_VALUE(&generator->value, value);
20572 				if (IS_VAR == IS_CV) {
20573 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
20574 				}
20575 			}
20576 		}
20577 	} else {
20578 		/* If no value was specified yield null */
20579 		ZVAL_NULL(&generator->value);
20580 	}
20581 
20582 	/* Set the new yielded key */
20583 	if (IS_VAR != IS_UNUSED) {
20584 		zend_free_op free_op2;
20585 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
20586 
20587 		/* Consts, temporary variables and references need copying */
20588 		if (IS_VAR == IS_CONST) {
20589 			ZVAL_COPY_VALUE(&generator->key, key);
20590 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
20591 				Z_ADDREF(generator->key);
20592 			}
20593 		} else if (IS_VAR == IS_TMP_VAR) {
20594 			ZVAL_COPY_VALUE(&generator->key, key);
20595 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
20596 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
20597 			zval_ptr_dtor_nogc(free_op2);
20598 		} else {
20599 			ZVAL_COPY_VALUE(&generator->key, key);
20600 			if (IS_VAR == IS_CV) {
20601 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
20602 			}
20603 		}
20604 
20605 		if (Z_TYPE(generator->key) == IS_LONG
20606 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
20607 		) {
20608 			generator->largest_used_integer_key = Z_LVAL(generator->key);
20609 		}
20610 	} else {
20611 		/* If no key was specified we use auto-increment keys */
20612 		generator->largest_used_integer_key++;
20613 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
20614 	}
20615 
20616 	if (RETURN_VALUE_USED(opline)) {
20617 		/* If the return value of yield is used set the send
20618 		 * target and initialize it to NULL */
20619 		generator->send_target = EX_VAR(opline->result.var);
20620 		ZVAL_NULL(generator->send_target);
20621 	} else {
20622 		generator->send_target = NULL;
20623 	}
20624 
20625 	/* We increment to the next op, so we are at the correct position when the
20626 	 * generator is resumed. */
20627 	ZEND_VM_INC_OPCODE();
20628 
20629 	/* The GOTO VM uses a local opline variable. We need to set the opline
20630 	 * variable in execute_data so we don't resume at an old position. */
20631 	SAVE_OPLINE();
20632 
20633 	ZEND_VM_RETURN();
20634 }
20635 
20636 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
20637 {
20638 	USE_OPLINE
20639 	zend_free_op free_op1, free_op_data1;
20640 	zval *var_ptr;
20641 	zval *value, *container, *dim;
20642 
20643 	SAVE_OPLINE();
20644 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20645 
20646 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
20647 assign_dim_op_array:
20648 		SEPARATE_ARRAY(container);
20649 assign_dim_op_new_array:
20650 		if (IS_UNUSED == IS_UNUSED) {
20651 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
20652 			if (UNEXPECTED(!var_ptr)) {
20653 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
20654 				goto assign_dim_op_ret_null;
20655 			}
20656 		} else {
20657 			dim = NULL;
20658 
20659 			if (IS_UNUSED == IS_CONST) {
20660 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
20661 			} else {
20662 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
20663 			}
20664 			if (UNEXPECTED(!var_ptr)) {
20665 				goto assign_dim_op_ret_null;
20666 			}
20667 			ZVAL_DEREF(var_ptr);
20668 			SEPARATE_ZVAL_NOREF(var_ptr);
20669 		}
20670 
20671 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
20672 
20673 		binary_op(var_ptr, var_ptr, value);
20674 
20675 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
20676 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
20677 		}
20678 	} else {
20679 		if (EXPECTED(Z_ISREF_P(container))) {
20680 			container = Z_REFVAL_P(container);
20681 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
20682 				goto assign_dim_op_array;
20683 			}
20684 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
20685 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
20686 assign_dim_op_convert_to_array:
20687 			ZVAL_NEW_ARR(container);
20688 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
20689 			goto assign_dim_op_new_array;
20690 		}
20691 
20692 		dim = NULL;
20693 
20694 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
20695 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
20696 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
20697 		} else {
20698 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
20699 				if (IS_UNUSED == IS_UNUSED) {
20700 					zend_throw_error(NULL, "[] operator not supported for strings");
20701 				} else {
20702 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
20703 					if (EXPECTED(EG(exception) == NULL)) {
20704 						zend_wrong_string_offset(EXECUTE_DATA_C);
20705 					}
20706 				}
20707 				UNDEF_RESULT();
20708 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
20709 				goto assign_dim_op_convert_to_array;
20710 			} else {
20711 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
20712 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
20713 				}
20714 assign_dim_op_ret_null:
20715 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
20716 					ZVAL_NULL(EX_VAR(opline->result.var));
20717 				}
20718 			}
20719 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
20720 		}
20721 	}
20722 
20723 	FREE_OP(free_op_data1);
20724 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20725 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
20726 }
20727 
20728 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
20729 {
20730 #if 1 && IS_UNUSED == IS_UNUSED
20731 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20732 #else
20733 # if 0 || IS_VAR != IS_UNUSED
20734 	USE_OPLINE
20735 
20736 	if (EXPECTED(0)) {
20737 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20738 	}
20739 	if (EXPECTED(1)) {
20740 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20741 	}
20742 # endif
20743 
20744 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20745 #endif
20746 }
20747 
20748 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20749 {
20750 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20751 }
20752 
20753 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20754 {
20755 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20756 }
20757 
20758 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20759 {
20760 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20761 }
20762 
20763 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20764 {
20765 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20766 }
20767 
20768 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20769 {
20770 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20771 }
20772 
20773 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20774 {
20775 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20776 }
20777 
20778 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20779 {
20780 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20781 }
20782 
20783 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20784 {
20785 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20786 }
20787 
20788 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20789 {
20790 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20791 }
20792 
20793 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20794 {
20795 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20796 }
20797 
20798 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20799 {
20800 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20801 }
20802 
20803 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20804 {
20805 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_UNUSED_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
20806 }
20807 
20808 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20809 {
20810 	USE_OPLINE
20811 	zend_free_op free_op1;
20812 	zval *container;
20813 
20814 	SAVE_OPLINE();
20815 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20816 
20817 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
20818 
20819 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
20820 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
20821 	}
20822 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20823 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20824 }
20825 
20826 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20827 {
20828 	USE_OPLINE
20829 	zend_free_op free_op1;
20830 	zval *container;
20831 
20832 	SAVE_OPLINE();
20833 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20834 
20835 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
20836 
20837 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
20838 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
20839 	}
20840 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20841 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20842 }
20843 
20844 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20845 {
20846 	USE_OPLINE
20847 	zval *container;
20848 	zend_free_op free_op1;
20849 
20850 	SAVE_OPLINE();
20851 
20852 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
20853         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
20854             zend_throw_error(NULL, "Cannot use temporary expression in write context");
20855 
20856 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
20857 			ZVAL_UNDEF(EX_VAR(opline->result.var));
20858 			HANDLE_EXCEPTION();
20859         }
20860 		container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20861 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
20862 		if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
20863 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
20864 		}
20865 
20866 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20867 	} else {
20868 		if (IS_UNUSED == IS_UNUSED) {
20869 			zend_throw_error(NULL, "Cannot use [] for reading");
20870 
20871 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
20872 			ZVAL_UNDEF(EX_VAR(opline->result.var));
20873 			HANDLE_EXCEPTION();
20874 		}
20875 		container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20876 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
20877 
20878 		zval_ptr_dtor_nogc(free_op1);
20879 	}
20880 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
20881 }
20882 
20883 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20884 {
20885 	USE_OPLINE
20886 	zend_free_op free_op1;
20887 	zval *object_ptr;
20888 
20889 	zval *value;
20890 	zval *variable_ptr;
20891 	zval *dim;
20892 
20893 	SAVE_OPLINE();
20894 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20895 
20896 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
20897 try_assign_dim_array:
20898 		SEPARATE_ARRAY(object_ptr);
20899 		if (IS_UNUSED == IS_UNUSED) {
20900 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
20901 			if (UNEXPECTED(variable_ptr == NULL)) {
20902 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
20903 				goto assign_dim_error;
20904 			}
20905 		} else {
20906 			dim = NULL;
20907 			if (IS_UNUSED == IS_CONST) {
20908 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
20909 			} else {
20910 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
20911 			}
20912 			if (UNEXPECTED(variable_ptr == NULL)) {
20913 				goto assign_dim_error;
20914 			}
20915 		}
20916 		value = EX_CONSTANT((opline+1)->op1);
20917 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
20918 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
20919 			ZVAL_COPY(EX_VAR(opline->result.var), value);
20920 		}
20921 	} else {
20922 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
20923 			object_ptr = Z_REFVAL_P(object_ptr);
20924 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
20925 				goto try_assign_dim_array;
20926 			}
20927 		}
20928 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
20929 			dim = NULL;
20930 			value = EX_CONSTANT((opline+1)->op1);
20931 
20932 			zend_assign_to_object_dim(object_ptr, dim, value);
20933 
20934 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
20935 				ZVAL_COPY(EX_VAR(opline->result.var), value);
20936 			}
20937 
20938 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
20939 			if (IS_UNUSED == IS_UNUSED) {
20940 				zend_throw_error(NULL, "[] operator not supported for strings");
20941 
20942 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20943 				UNDEF_RESULT();
20944 				HANDLE_EXCEPTION();
20945 			} else {
20946 				dim = NULL;
20947 				value = EX_CONSTANT((opline+1)->op1);
20948 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
20949 
20950 			}
20951 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
20952 			ZVAL_NEW_ARR(object_ptr);
20953 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
20954 			goto try_assign_dim_array;
20955 		} else {
20956 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
20957 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
20958 			}
20959 			dim = NULL;
20960 assign_dim_error:
20961 
20962 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
20963 				ZVAL_NULL(EX_VAR(opline->result.var));
20964 			}
20965 		}
20966 	}
20967 	if (IS_UNUSED != IS_UNUSED) {
20968 
20969 	}
20970 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
20971 	/* assign_dim has two opcodes! */
20972 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
20973 }
20974 
20975 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
20976 {
20977 	USE_OPLINE
20978 	zend_free_op free_op1;
20979 	zval *object_ptr;
20980 	zend_free_op free_op_data;
20981 	zval *value;
20982 	zval *variable_ptr;
20983 	zval *dim;
20984 
20985 	SAVE_OPLINE();
20986 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
20987 
20988 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
20989 try_assign_dim_array:
20990 		SEPARATE_ARRAY(object_ptr);
20991 		if (IS_UNUSED == IS_UNUSED) {
20992 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
20993 			if (UNEXPECTED(variable_ptr == NULL)) {
20994 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
20995 				goto assign_dim_error;
20996 			}
20997 		} else {
20998 			dim = NULL;
20999 			if (IS_UNUSED == IS_CONST) {
21000 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
21001 			} else {
21002 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
21003 			}
21004 			if (UNEXPECTED(variable_ptr == NULL)) {
21005 				goto assign_dim_error;
21006 			}
21007 		}
21008 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
21009 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
21010 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21011 			ZVAL_COPY(EX_VAR(opline->result.var), value);
21012 		}
21013 	} else {
21014 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
21015 			object_ptr = Z_REFVAL_P(object_ptr);
21016 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
21017 				goto try_assign_dim_array;
21018 			}
21019 		}
21020 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
21021 			dim = NULL;
21022 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
21023 
21024 			zend_assign_to_object_dim(object_ptr, dim, value);
21025 
21026 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21027 				ZVAL_COPY(EX_VAR(opline->result.var), value);
21028 			}
21029 
21030 			zval_ptr_dtor_nogc(free_op_data);
21031 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
21032 			if (IS_UNUSED == IS_UNUSED) {
21033 				zend_throw_error(NULL, "[] operator not supported for strings");
21034 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
21035 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21036 				UNDEF_RESULT();
21037 				HANDLE_EXCEPTION();
21038 			} else {
21039 				dim = NULL;
21040 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
21041 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
21042 				zval_ptr_dtor_nogc(free_op_data);
21043 			}
21044 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
21045 			ZVAL_NEW_ARR(object_ptr);
21046 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
21047 			goto try_assign_dim_array;
21048 		} else {
21049 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
21050 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
21051 			}
21052 			dim = NULL;
21053 assign_dim_error:
21054 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
21055 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21056 				ZVAL_NULL(EX_VAR(opline->result.var));
21057 			}
21058 		}
21059 	}
21060 	if (IS_UNUSED != IS_UNUSED) {
21061 
21062 	}
21063 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21064 	/* assign_dim has two opcodes! */
21065 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
21066 }
21067 
21068 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21069 {
21070 	USE_OPLINE
21071 	zend_free_op free_op1;
21072 	zval *object_ptr;
21073 	zend_free_op free_op_data;
21074 	zval *value;
21075 	zval *variable_ptr;
21076 	zval *dim;
21077 
21078 	SAVE_OPLINE();
21079 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21080 
21081 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
21082 try_assign_dim_array:
21083 		SEPARATE_ARRAY(object_ptr);
21084 		if (IS_UNUSED == IS_UNUSED) {
21085 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
21086 			if (UNEXPECTED(variable_ptr == NULL)) {
21087 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
21088 				goto assign_dim_error;
21089 			}
21090 		} else {
21091 			dim = NULL;
21092 			if (IS_UNUSED == IS_CONST) {
21093 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
21094 			} else {
21095 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
21096 			}
21097 			if (UNEXPECTED(variable_ptr == NULL)) {
21098 				goto assign_dim_error;
21099 			}
21100 		}
21101 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
21102 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
21103 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21104 			ZVAL_COPY(EX_VAR(opline->result.var), value);
21105 		}
21106 	} else {
21107 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
21108 			object_ptr = Z_REFVAL_P(object_ptr);
21109 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
21110 				goto try_assign_dim_array;
21111 			}
21112 		}
21113 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
21114 			dim = NULL;
21115 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
21116 
21117 			zend_assign_to_object_dim(object_ptr, dim, value);
21118 
21119 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21120 				ZVAL_COPY(EX_VAR(opline->result.var), value);
21121 			}
21122 
21123 			zval_ptr_dtor_nogc(free_op_data);
21124 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
21125 			if (IS_UNUSED == IS_UNUSED) {
21126 				zend_throw_error(NULL, "[] operator not supported for strings");
21127 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
21128 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21129 				UNDEF_RESULT();
21130 				HANDLE_EXCEPTION();
21131 			} else {
21132 				dim = NULL;
21133 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
21134 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
21135 				zval_ptr_dtor_nogc(free_op_data);
21136 			}
21137 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
21138 			ZVAL_NEW_ARR(object_ptr);
21139 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
21140 			goto try_assign_dim_array;
21141 		} else {
21142 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
21143 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
21144 			}
21145 			dim = NULL;
21146 assign_dim_error:
21147 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
21148 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21149 				ZVAL_NULL(EX_VAR(opline->result.var));
21150 			}
21151 		}
21152 	}
21153 	if (IS_UNUSED != IS_UNUSED) {
21154 
21155 	}
21156 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21157 	/* assign_dim has two opcodes! */
21158 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
21159 }
21160 
21161 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21162 {
21163 	USE_OPLINE
21164 	zend_free_op free_op1;
21165 	zval *object_ptr;
21166 
21167 	zval *value;
21168 	zval *variable_ptr;
21169 	zval *dim;
21170 
21171 	SAVE_OPLINE();
21172 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21173 
21174 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
21175 try_assign_dim_array:
21176 		SEPARATE_ARRAY(object_ptr);
21177 		if (IS_UNUSED == IS_UNUSED) {
21178 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
21179 			if (UNEXPECTED(variable_ptr == NULL)) {
21180 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
21181 				goto assign_dim_error;
21182 			}
21183 		} else {
21184 			dim = NULL;
21185 			if (IS_UNUSED == IS_CONST) {
21186 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
21187 			} else {
21188 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
21189 			}
21190 			if (UNEXPECTED(variable_ptr == NULL)) {
21191 				goto assign_dim_error;
21192 			}
21193 		}
21194 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
21195 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
21196 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21197 			ZVAL_COPY(EX_VAR(opline->result.var), value);
21198 		}
21199 	} else {
21200 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
21201 			object_ptr = Z_REFVAL_P(object_ptr);
21202 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
21203 				goto try_assign_dim_array;
21204 			}
21205 		}
21206 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
21207 			dim = NULL;
21208 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
21209 
21210 			zend_assign_to_object_dim(object_ptr, dim, value);
21211 
21212 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21213 				ZVAL_COPY(EX_VAR(opline->result.var), value);
21214 			}
21215 
21216 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
21217 			if (IS_UNUSED == IS_UNUSED) {
21218 				zend_throw_error(NULL, "[] operator not supported for strings");
21219 
21220 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21221 				UNDEF_RESULT();
21222 				HANDLE_EXCEPTION();
21223 			} else {
21224 				dim = NULL;
21225 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
21226 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
21227 
21228 			}
21229 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
21230 			ZVAL_NEW_ARR(object_ptr);
21231 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
21232 			goto try_assign_dim_array;
21233 		} else {
21234 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
21235 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
21236 			}
21237 			dim = NULL;
21238 assign_dim_error:
21239 
21240 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21241 				ZVAL_NULL(EX_VAR(opline->result.var));
21242 			}
21243 		}
21244 	}
21245 	if (IS_UNUSED != IS_UNUSED) {
21246 
21247 	}
21248 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21249 	/* assign_dim has two opcodes! */
21250 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
21251 }
21252 
21253 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21254 {
21255 	USE_OPLINE
21256 	zval *function_name;
21257 	zend_class_entry *ce;
21258 	zend_object *object;
21259 	zend_function *fbc;
21260 	zend_execute_data *call;
21261 
21262 	SAVE_OPLINE();
21263 
21264 	if (IS_VAR == IS_CONST) {
21265 		/* no function found. try a static method in class */
21266 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
21267 		if (UNEXPECTED(ce == NULL)) {
21268 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
21269 			if (UNEXPECTED(ce == NULL)) {
21270 				ZEND_ASSERT(EG(exception));
21271 
21272 				HANDLE_EXCEPTION();
21273 			}
21274 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
21275 		}
21276 	} else if (IS_VAR == IS_UNUSED) {
21277 		ce = zend_fetch_class(NULL, opline->op1.num);
21278 		if (UNEXPECTED(ce == NULL)) {
21279 			ZEND_ASSERT(EG(exception));
21280 
21281 			HANDLE_EXCEPTION();
21282 		}
21283 	} else {
21284 		ce = Z_CE_P(EX_VAR(opline->op1.var));
21285 	}
21286 
21287 	if (IS_VAR == IS_CONST &&
21288 	    IS_UNUSED == IS_CONST &&
21289 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
21290 		/* nothing to do */
21291 	} else if (IS_VAR != IS_CONST &&
21292 	           IS_UNUSED == IS_CONST &&
21293 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
21294 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
21295 	} else if (IS_UNUSED != IS_UNUSED) {
21296 
21297 
21298 		function_name = NULL;
21299 		if (IS_UNUSED != IS_CONST) {
21300 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
21301 				do {
21302 					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
21303 						function_name = Z_REFVAL_P(function_name);
21304 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
21305 							break;
21306 						}
21307 					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
21308 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
21309 						if (UNEXPECTED(EG(exception) != NULL)) {
21310 							HANDLE_EXCEPTION();
21311 						}
21312 					}
21313 					zend_throw_error(NULL, "Function name must be a string");
21314 
21315 					HANDLE_EXCEPTION();
21316 				} while (0);
21317  			}
21318 		}
21319 
21320 		if (ce->get_static_method) {
21321 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
21322 		} else {
21323 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
21324 		}
21325 		if (UNEXPECTED(fbc == NULL)) {
21326 			if (EXPECTED(!EG(exception))) {
21327 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
21328 			}
21329 
21330 			HANDLE_EXCEPTION();
21331 		}
21332 		if (IS_UNUSED == IS_CONST &&
21333 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
21334 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
21335 			if (IS_VAR == IS_CONST) {
21336 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
21337 			} else {
21338 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
21339 			}
21340 		}
21341 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
21342 			init_func_run_time_cache(&fbc->op_array);
21343 		}
21344 		if (IS_UNUSED != IS_CONST) {
21345 
21346 		}
21347 	} else {
21348 		if (UNEXPECTED(ce->constructor == NULL)) {
21349 			zend_throw_error(NULL, "Cannot call constructor");
21350 			HANDLE_EXCEPTION();
21351 		}
21352 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
21353 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
21354 			HANDLE_EXCEPTION();
21355 		}
21356 		fbc = ce->constructor;
21357 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
21358 			init_func_run_time_cache(&fbc->op_array);
21359 		}
21360 	}
21361 
21362 	object = NULL;
21363 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
21364 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
21365 			object = Z_OBJ(EX(This));
21366 			ce = object->ce;
21367 		} else {
21368 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
21369 				/* Allowed for PHP 4 compatibility. */
21370 				zend_error(
21371 					E_DEPRECATED,
21372 					"Non-static method %s::%s() should not be called statically",
21373 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
21374 				if (UNEXPECTED(EG(exception) != NULL)) {
21375 					HANDLE_EXCEPTION();
21376 				}
21377 			} else {
21378 				/* An internal function assumes $this is present and won't check that.
21379 				 * So PHP would crash by allowing the call. */
21380 				zend_throw_error(
21381 					zend_ce_error,
21382 					"Non-static method %s::%s() cannot be called statically",
21383 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
21384 				HANDLE_EXCEPTION();
21385 			}
21386 		}
21387 	}
21388 
21389 	if (IS_VAR == IS_UNUSED) {
21390 		/* previous opcode is ZEND_FETCH_CLASS */
21391 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
21392 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
21393 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
21394 				ce = Z_OBJCE(EX(This));
21395 			} else {
21396 				ce = Z_CE(EX(This));
21397 			}
21398 		}
21399 	}
21400 
21401 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
21402 		fbc, opline->extended_value, ce, object);
21403 	call->prev_execute_data = EX(call);
21404 	EX(call) = call;
21405 
21406 	ZEND_VM_NEXT_OPCODE();
21407 }
21408 
21409 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21410 {
21411 	USE_OPLINE
21412 
21413 	SAVE_OPLINE();
21414 	if (IS_VAR == IS_UNUSED) {
21415 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
21416 	} else {
21417 /* prevents "undefined variable opline" errors */
21418 #if 0 || (IS_VAR != IS_UNUSED)
21419 		zval *retval_ref, *retval_ptr;
21420 		zend_free_op free_op1;
21421 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
21422 
21423 		retval_ref = retval_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21424 
21425 		if (IS_VAR == IS_CONST) {
21426 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
21427 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
21428 		} else if (IS_VAR == IS_VAR) {
21429 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
21430 				retval_ptr = Z_INDIRECT_P(retval_ptr);
21431 			}
21432 			ZVAL_DEREF(retval_ptr);
21433 		} else if (IS_VAR == IS_CV) {
21434 			ZVAL_DEREF(retval_ptr);
21435 		}
21436 
21437 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
21438 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
21439 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
21440 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
21441 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
21442 			&& retval_ref != retval_ptr)
21443 		) {
21444 			/* A cast might happen - unwrap the reference if this is a by-value return */
21445 			if (Z_REFCOUNT_P(retval_ref) == 1) {
21446 				ZVAL_UNREF(retval_ref);
21447 			} else {
21448 				Z_DELREF_P(retval_ref);
21449 				ZVAL_COPY(retval_ref, retval_ptr);
21450 			}
21451 			retval_ptr = retval_ref;
21452 		}
21453 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
21454 #endif
21455 	}
21456 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21457 }
21458 
21459 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21460 {
21461 	USE_OPLINE
21462 	zend_free_op free_op1;
21463 	zval *expr_ptr, new_expr;
21464 
21465 	SAVE_OPLINE();
21466 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
21467 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
21468 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21469 		ZVAL_MAKE_REF(expr_ptr);
21470 		Z_ADDREF_P(expr_ptr);
21471 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21472 	} else {
21473 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21474 		if (IS_VAR == IS_TMP_VAR) {
21475 			/* pass */
21476 		} else if (IS_VAR == IS_CONST) {
21477 			if (Z_REFCOUNTED_P(expr_ptr)) {
21478 				Z_ADDREF_P(expr_ptr);
21479 			}
21480 		} else if (IS_VAR == IS_CV) {
21481 			ZVAL_DEREF(expr_ptr);
21482 			if (Z_REFCOUNTED_P(expr_ptr)) {
21483 				Z_ADDREF_P(expr_ptr);
21484 			}
21485 		} else /* if (IS_VAR == IS_VAR) */ {
21486 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
21487 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
21488 
21489 				expr_ptr = Z_REFVAL_P(expr_ptr);
21490 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
21491 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
21492 					expr_ptr = &new_expr;
21493 					efree_size(ref, sizeof(zend_reference));
21494 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
21495 					Z_ADDREF_P(expr_ptr);
21496 				}
21497 			}
21498 		}
21499 	}
21500 
21501 	if (IS_UNUSED != IS_UNUSED) {
21502 
21503 		zval *offset = NULL;
21504 		zend_string *str;
21505 		zend_ulong hval;
21506 
21507 add_again:
21508 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
21509 			str = Z_STR_P(offset);
21510 			if (IS_UNUSED != IS_CONST) {
21511 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
21512 					goto num_index;
21513 				}
21514 			}
21515 str_index:
21516 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
21517 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
21518 			hval = Z_LVAL_P(offset);
21519 num_index:
21520 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
21521 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
21522 			offset = Z_REFVAL_P(offset);
21523 			goto add_again;
21524 		} else if (Z_TYPE_P(offset) == IS_NULL) {
21525 			str = ZSTR_EMPTY_ALLOC();
21526 			goto str_index;
21527 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
21528 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
21529 			goto num_index;
21530 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
21531 			hval = 0;
21532 			goto num_index;
21533 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
21534 			hval = 1;
21535 			goto num_index;
21536 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
21537 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
21538 			str = ZSTR_EMPTY_ALLOC();
21539 			goto str_index;
21540 		} else {
21541 			zend_error(E_WARNING, "Illegal offset type");
21542 			zval_ptr_dtor(expr_ptr);
21543 		}
21544 
21545 	} else {
21546 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
21547 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
21548 			zval_ptr_dtor(expr_ptr);
21549 		}
21550 	}
21551 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21552 }
21553 
21554 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21555 {
21556 	zval *array;
21557 	uint32_t size;
21558 	USE_OPLINE
21559 
21560 	array = EX_VAR(opline->result.var);
21561 	if (IS_VAR != IS_UNUSED) {
21562 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
21563 	} else {
21564 		size = 0;
21565 	}
21566 	ZVAL_NEW_ARR(array);
21567 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
21568 
21569 	if (IS_VAR != IS_UNUSED) {
21570 		/* Explicitly initialize array as not-packed if flag is set */
21571 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
21572 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
21573 		}
21574 	}
21575 
21576 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
21577 }
21578 
21579 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21580 {
21581 	USE_OPLINE
21582 	zval *var_ptr;
21583 
21584 	var_ptr = EX_VAR(opline->op1.var);
21585 	if (UNEXPECTED(Z_ISREF_P(var_ptr))) {
21586 		if (UNEXPECTED(Z_REFCOUNT_P(var_ptr) == 1)) {
21587 			ZVAL_UNREF(var_ptr);
21588 		}
21589 	}
21590 
21591 	ZEND_VM_NEXT_OPCODE();
21592 }
21593 
21594 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21595 {
21596 	USE_OPLINE
21597 
21598 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
21599 
21600 	SAVE_OPLINE();
21601 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
21602 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
21603 
21604 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
21605 		UNDEF_RESULT();
21606 		HANDLE_EXCEPTION();
21607 	}
21608 
21609 	/* Destroy the previously yielded value */
21610 	zval_ptr_dtor(&generator->value);
21611 
21612 	/* Destroy the previously yielded key */
21613 	zval_ptr_dtor(&generator->key);
21614 
21615 	/* Set the new yielded value */
21616 	if (IS_VAR != IS_UNUSED) {
21617 		zend_free_op free_op1;
21618 
21619 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
21620 			/* Constants and temporary variables aren't yieldable by reference,
21621 			 * but we still allow them with a notice. */
21622 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
21623 				zval *value;
21624 
21625 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
21626 
21627 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21628 				ZVAL_COPY_VALUE(&generator->value, value);
21629 				if (IS_VAR == IS_CONST) {
21630 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
21631 						Z_ADDREF(generator->value);
21632 					}
21633 				}
21634 			} else {
21635 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21636 
21637 				/* If a function call result is yielded and the function did
21638 				 * not return by reference we throw a notice. */
21639 				if (IS_VAR == IS_VAR &&
21640 				    (value_ptr == &EG(uninitialized_zval) ||
21641 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
21642 				      !Z_ISREF_P(value_ptr)))) {
21643 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
21644 				} else {
21645 					ZVAL_MAKE_REF(value_ptr);
21646 				}
21647 				ZVAL_COPY(&generator->value, value_ptr);
21648 
21649 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21650 			}
21651 		} else {
21652 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21653 
21654 			/* Consts, temporary variables and references need copying */
21655 			if (IS_VAR == IS_CONST) {
21656 				ZVAL_COPY_VALUE(&generator->value, value);
21657 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
21658 					Z_ADDREF(generator->value);
21659 				}
21660 			} else if (IS_VAR == IS_TMP_VAR) {
21661 				ZVAL_COPY_VALUE(&generator->value, value);
21662             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
21663 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
21664 				zval_ptr_dtor_nogc(free_op1);
21665 			} else {
21666 				ZVAL_COPY_VALUE(&generator->value, value);
21667 				if (IS_VAR == IS_CV) {
21668 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
21669 				}
21670 			}
21671 		}
21672 	} else {
21673 		/* If no value was specified yield null */
21674 		ZVAL_NULL(&generator->value);
21675 	}
21676 
21677 	/* Set the new yielded key */
21678 	if (IS_UNUSED != IS_UNUSED) {
21679 
21680 		zval *key = NULL;
21681 
21682 		/* Consts, temporary variables and references need copying */
21683 		if (IS_UNUSED == IS_CONST) {
21684 			ZVAL_COPY_VALUE(&generator->key, key);
21685 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
21686 				Z_ADDREF(generator->key);
21687 			}
21688 		} else if (IS_UNUSED == IS_TMP_VAR) {
21689 			ZVAL_COPY_VALUE(&generator->key, key);
21690 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
21691 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
21692 
21693 		} else {
21694 			ZVAL_COPY_VALUE(&generator->key, key);
21695 			if (IS_UNUSED == IS_CV) {
21696 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
21697 			}
21698 		}
21699 
21700 		if (Z_TYPE(generator->key) == IS_LONG
21701 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
21702 		) {
21703 			generator->largest_used_integer_key = Z_LVAL(generator->key);
21704 		}
21705 	} else {
21706 		/* If no key was specified we use auto-increment keys */
21707 		generator->largest_used_integer_key++;
21708 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
21709 	}
21710 
21711 	if (RETURN_VALUE_USED(opline)) {
21712 		/* If the return value of yield is used set the send
21713 		 * target and initialize it to NULL */
21714 		generator->send_target = EX_VAR(opline->result.var);
21715 		ZVAL_NULL(generator->send_target);
21716 	} else {
21717 		generator->send_target = NULL;
21718 	}
21719 
21720 	/* We increment to the next op, so we are at the correct position when the
21721 	 * generator is resumed. */
21722 	ZEND_VM_INC_OPCODE();
21723 
21724 	/* The GOTO VM uses a local opline variable. We need to set the opline
21725 	 * variable in execute_data so we don't resume at an old position. */
21726 	SAVE_OPLINE();
21727 
21728 	ZEND_VM_RETURN();
21729 }
21730 
21731 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21732 {
21733 	USE_OPLINE
21734 	zval *op1 = EX_VAR(opline->op1.var);
21735 
21736 	if (IS_VAR == IS_CV) {
21737 		if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
21738 			ZVAL_NEW_EMPTY_REF(op1);
21739 			Z_SET_REFCOUNT_P(op1, 2);
21740 			ZVAL_NULL(Z_REFVAL_P(op1));
21741 			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
21742 		} else {
21743 			ZVAL_MAKE_REF(op1);
21744 			ZVAL_COPY(EX_VAR(opline->result.var), op1);
21745 		}
21746 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) {
21747 		op1 = Z_INDIRECT_P(op1);
21748 		if (EXPECTED(!Z_ISREF_P(op1))) {
21749 			ZVAL_MAKE_REF(op1);
21750 		}
21751 		GC_REFCOUNT(Z_REF_P(op1))++;
21752 		ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
21753 	} else {
21754 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), op1);
21755 	}
21756 	ZEND_VM_NEXT_OPCODE();
21757 }
21758 
21759 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21760 {
21761 	USE_OPLINE
21762 	zend_free_op free_op1;
21763 	zval *op1;
21764 	zend_long count;
21765 
21766 	SAVE_OPLINE();
21767 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21768 	do {
21769 		if (Z_TYPE_P(op1) == IS_ARRAY) {
21770 			count = zend_array_count(Z_ARRVAL_P(op1));
21771 			break;
21772 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
21773 			/* first, we check if the handler is defined */
21774 			if (Z_OBJ_HT_P(op1)->count_elements) {
21775 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
21776 					break;
21777 				}
21778 			}
21779 
21780 			/* if not and the object implements Countable we call its count() method */
21781 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
21782 				zval retval;
21783 
21784 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
21785 				count = zval_get_long(&retval);
21786 				zval_ptr_dtor(&retval);
21787 				break;
21788 			}
21789 
21790 			/* If There's no handler and it doesn't implement Countable then add a warning */
21791 			count = 1;
21792 		} else if (Z_TYPE_P(op1) == IS_NULL) {
21793 			count = 0;
21794 		} else {
21795 			count = 1;
21796 		}
21797 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
21798 	} while (0);
21799 
21800 	ZVAL_LONG(EX_VAR(opline->result.var), count);
21801 	zval_ptr_dtor_nogc(free_op1);
21802 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21803 }
21804 
21805 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21806 {
21807 	USE_OPLINE
21808 
21809 	if (IS_VAR == IS_UNUSED) {
21810 		if (UNEXPECTED(!EX(func)->common.scope)) {
21811 			SAVE_OPLINE();
21812 			zend_error(E_WARNING, "get_class() called without object from outside a class");
21813 			ZVAL_FALSE(EX_VAR(opline->result.var));
21814 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21815 		} else {
21816 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
21817 			ZEND_VM_NEXT_OPCODE();
21818 		}
21819 	} else {
21820 		zend_free_op free_op1;
21821 		zval *op1;
21822 
21823 		SAVE_OPLINE();
21824 		op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21825 		if (Z_TYPE_P(op1) == IS_OBJECT) {
21826 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
21827 		} else {
21828 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
21829 			ZVAL_FALSE(EX_VAR(opline->result.var));
21830 		}
21831 		zval_ptr_dtor_nogc(free_op1);
21832 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21833 	}
21834 }
21835 
21836 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21837 {
21838 	USE_OPLINE
21839 	zend_free_op free_op1;
21840 	zval *op1;
21841 	zend_string *type;
21842 
21843 	SAVE_OPLINE();
21844 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21845 	type = zend_zval_get_type(op1);
21846 	if (EXPECTED(type)) {
21847 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
21848 	} else {
21849 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
21850 	}
21851 	zval_ptr_dtor_nogc(free_op1);
21852 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21853 }
21854 
21855 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21856 {
21857 	USE_OPLINE
21858 	zend_free_op free_op1;
21859 	zval *op1, *op2;
21860 	int result;
21861 
21862 	SAVE_OPLINE();
21863 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21864 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
21865 	result = fast_is_identical_function(op1, op2);
21866 	zval_ptr_dtor_nogc(free_op1);
21867 
21868 	ZEND_VM_SMART_BRANCH(result, 1);
21869 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
21870 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21871 }
21872 
21873 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
21874 {
21875 	USE_OPLINE
21876 	zend_free_op free_op1;
21877 	zval *op1, *op2;
21878 	int result;
21879 
21880 	SAVE_OPLINE();
21881 	op1 = _get_zval_ptr_var_deref(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21882 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
21883 	result = fast_is_not_identical_function(op1, op2);
21884 	zval_ptr_dtor_nogc(free_op1);
21885 
21886 	ZEND_VM_SMART_BRANCH(result, 1);
21887 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
21888 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
21889 }
21890 
21891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21892 {
21893 	USE_OPLINE
21894 	zend_free_op free_op1, free_op_data1;
21895 	zval *object;
21896 	zval *property;
21897 	zval *value;
21898 	zval *zptr;
21899 
21900 	SAVE_OPLINE();
21901 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21902 
21903 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
21904 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
21905 	}
21906 
21907 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
21908 
21909 	do {
21910 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
21911 
21912 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
21913 			ZVAL_DEREF(object);
21914 			if (UNEXPECTED(!make_real_object(object))) {
21915 				zend_string *property_name = zval_get_string(property);
21916 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
21917 				zend_string_release(property_name);
21918 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21919 					ZVAL_NULL(EX_VAR(opline->result.var));
21920 				}
21921 				break;
21922 			}
21923 		}
21924 
21925 		/* here we are sure we are dealing with an object */
21926 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
21927 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
21928 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
21929 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21930 					ZVAL_NULL(EX_VAR(opline->result.var));
21931 				}
21932 			} else {
21933 				ZVAL_DEREF(zptr);
21934 				SEPARATE_ZVAL_NOREF(zptr);
21935 
21936 				binary_op(zptr, zptr, value);
21937 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21938 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
21939 				}
21940 			}
21941 		} else {
21942 			zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
21943 		}
21944 	} while (0);
21945 
21946 	FREE_OP(free_op_data1);
21947 
21948 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
21949 	/* assign_obj has two opcodes! */
21950 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
21951 }
21952 
21953 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
21954 {
21955 	USE_OPLINE
21956 	zend_free_op free_op1, free_op_data1;
21957 	zval *var_ptr;
21958 	zval *value, *container, *dim;
21959 
21960 	SAVE_OPLINE();
21961 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
21962 
21963 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
21964 assign_dim_op_array:
21965 		SEPARATE_ARRAY(container);
21966 assign_dim_op_new_array:
21967 		if (IS_CV == IS_UNUSED) {
21968 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
21969 			if (UNEXPECTED(!var_ptr)) {
21970 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
21971 				goto assign_dim_op_ret_null;
21972 			}
21973 		} else {
21974 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
21975 
21976 			if (IS_CV == IS_CONST) {
21977 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
21978 			} else {
21979 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
21980 			}
21981 			if (UNEXPECTED(!var_ptr)) {
21982 				goto assign_dim_op_ret_null;
21983 			}
21984 			ZVAL_DEREF(var_ptr);
21985 			SEPARATE_ZVAL_NOREF(var_ptr);
21986 		}
21987 
21988 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
21989 
21990 		binary_op(var_ptr, var_ptr, value);
21991 
21992 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
21993 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
21994 		}
21995 	} else {
21996 		if (EXPECTED(Z_ISREF_P(container))) {
21997 			container = Z_REFVAL_P(container);
21998 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
21999 				goto assign_dim_op_array;
22000 			}
22001 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
22002 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
22003 assign_dim_op_convert_to_array:
22004 			ZVAL_NEW_ARR(container);
22005 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
22006 			goto assign_dim_op_new_array;
22007 		}
22008 
22009 		dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22010 
22011 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
22012 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
22013 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
22014 		} else {
22015 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
22016 				if (IS_CV == IS_UNUSED) {
22017 					zend_throw_error(NULL, "[] operator not supported for strings");
22018 				} else {
22019 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
22020 					if (EXPECTED(EG(exception) == NULL)) {
22021 						zend_wrong_string_offset(EXECUTE_DATA_C);
22022 					}
22023 				}
22024 				UNDEF_RESULT();
22025 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
22026 				goto assign_dim_op_convert_to_array;
22027 			} else {
22028 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
22029 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
22030 				}
22031 assign_dim_op_ret_null:
22032 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22033 					ZVAL_NULL(EX_VAR(opline->result.var));
22034 				}
22035 			}
22036 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
22037 		}
22038 	}
22039 
22040 	FREE_OP(free_op_data1);
22041 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22042 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
22043 }
22044 
22045 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
22046 {
22047 	USE_OPLINE
22048 	zend_free_op free_op1;
22049 	zval *var_ptr;
22050 	zval *value;
22051 
22052 	SAVE_OPLINE();
22053 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22054 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22055 
22056 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
22057 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22058 			ZVAL_NULL(EX_VAR(opline->result.var));
22059 		}
22060 	} else {
22061 		ZVAL_DEREF(var_ptr);
22062 		SEPARATE_ZVAL_NOREF(var_ptr);
22063 
22064 		binary_op(var_ptr, var_ptr, value);
22065 
22066 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22067 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
22068 		}
22069 	}
22070 
22071 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22072 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22073 }
22074 
22075 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
22076 {
22077 #if 1 && IS_CV == IS_UNUSED
22078 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22079 #else
22080 # if 0 || IS_VAR != IS_UNUSED
22081 	USE_OPLINE
22082 
22083 	if (EXPECTED(1)) {
22084 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22085 	}
22086 	if (EXPECTED(0)) {
22087 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22088 	}
22089 # endif
22090 
22091 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22092 #endif
22093 }
22094 
22095 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
22096 {
22097 #if 1 && IS_CV == IS_UNUSED
22098 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22099 #else
22100 # if 0 || IS_VAR != IS_UNUSED
22101 	USE_OPLINE
22102 
22103 	if (EXPECTED(0)) {
22104 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22105 	}
22106 	if (EXPECTED(1)) {
22107 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22108 	}
22109 # endif
22110 
22111 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22112 #endif
22113 }
22114 
22115 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
22116 {
22117 #if 1 && IS_CV == IS_UNUSED
22118 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22119 #else
22120 # if 0 || IS_VAR != IS_UNUSED
22121 	USE_OPLINE
22122 
22123 	if (EXPECTED(0)) {
22124 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22125 	}
22126 	if (EXPECTED(0)) {
22127 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22128 	}
22129 # endif
22130 
22131 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22132 #endif
22133 }
22134 
22135 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22136 {
22137 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22138 }
22139 
22140 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22141 {
22142 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22143 }
22144 
22145 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22146 {
22147 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22148 }
22149 
22150 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22151 {
22152 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22153 }
22154 
22155 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22156 {
22157 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22158 }
22159 
22160 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22161 {
22162 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22163 }
22164 
22165 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22166 {
22167 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22168 }
22169 
22170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22171 {
22172 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22173 }
22174 
22175 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22176 {
22177 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22178 }
22179 
22180 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22181 {
22182 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22183 }
22184 
22185 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22186 {
22187 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22188 }
22189 
22190 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22191 {
22192 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22193 }
22194 
22195 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22196 {
22197 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22198 }
22199 
22200 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22201 {
22202 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22203 }
22204 
22205 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22206 {
22207 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22208 }
22209 
22210 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22211 {
22212 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22213 }
22214 
22215 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22216 {
22217 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22218 }
22219 
22220 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22221 {
22222 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22223 }
22224 
22225 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22226 {
22227 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22228 }
22229 
22230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22231 {
22232 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22233 }
22234 
22235 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22236 {
22237 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22238 }
22239 
22240 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22241 {
22242 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22243 }
22244 
22245 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22246 {
22247 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22248 }
22249 
22250 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22251 {
22252 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22253 }
22254 
22255 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22256 {
22257 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22258 }
22259 
22260 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22261 {
22262 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22263 }
22264 
22265 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22266 {
22267 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22268 }
22269 
22270 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22271 {
22272 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22273 }
22274 
22275 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22276 {
22277 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22278 }
22279 
22280 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22281 {
22282 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22283 }
22284 
22285 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22286 {
22287 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22288 }
22289 
22290 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22291 {
22292 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22293 }
22294 
22295 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22296 {
22297 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22298 }
22299 
22300 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22301 {
22302 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22303 }
22304 
22305 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22306 {
22307 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22308 }
22309 
22310 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22311 {
22312 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_CV_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22313 }
22314 
22315 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
22316 {
22317 	USE_OPLINE
22318 	zend_free_op free_op1;
22319 	zval *object;
22320 	zval *property;
22321 	zval *zptr;
22322 
22323 	SAVE_OPLINE();
22324 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22325 
22326 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22327 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22328 	}
22329 
22330 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22331 
22332 	do {
22333 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22334 			ZVAL_DEREF(object);
22335 			if (UNEXPECTED(!make_real_object(object))) {
22336 				zend_string *property_name = zval_get_string(property);
22337 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
22338 				zend_string_release(property_name);
22339 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22340 					ZVAL_NULL(EX_VAR(opline->result.var));
22341 				}
22342 				break;
22343 			}
22344 		}
22345 
22346 		/* here we are sure we are dealing with an object */
22347 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
22348 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
22349 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
22350 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22351 					ZVAL_NULL(EX_VAR(opline->result.var));
22352 				}
22353 			} else {
22354 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
22355 					if (inc) {
22356 						fast_long_increment_function(zptr);
22357 					} else {
22358 						fast_long_decrement_function(zptr);
22359 					}
22360 				} else {
22361 					ZVAL_DEREF(zptr);
22362 					SEPARATE_ZVAL_NOREF(zptr);
22363 
22364 					if (inc) {
22365 						increment_function(zptr);
22366 					} else {
22367 						decrement_function(zptr);
22368 					}
22369 				}
22370 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22371 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
22372 				}
22373 			}
22374 		} else {
22375 			zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
22376 		}
22377 	} while (0);
22378 
22379 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22380 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22381 }
22382 
22383 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22384 {
22385 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22386 }
22387 
22388 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22389 {
22390 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22391 }
22392 
22393 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
22394 {
22395 	USE_OPLINE
22396 	zend_free_op free_op1;
22397 	zval *object;
22398 	zval *property;
22399 	zval *zptr;
22400 
22401 	SAVE_OPLINE();
22402 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22403 
22404 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22405 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22406 	}
22407 
22408 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22409 
22410 	do {
22411 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22412 			ZVAL_DEREF(object);
22413 			if (UNEXPECTED(!make_real_object(object))) {
22414 				zend_string *property_name = zval_get_string(property);
22415 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
22416 				zend_string_release(property_name);
22417 				ZVAL_NULL(EX_VAR(opline->result.var));
22418 				break;
22419 			}
22420 		}
22421 
22422 		/* here we are sure we are dealing with an object */
22423 
22424 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
22425 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
22426 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
22427 				ZVAL_NULL(EX_VAR(opline->result.var));
22428 			} else {
22429 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
22430 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
22431 					if (inc) {
22432 						fast_long_increment_function(zptr);
22433 					} else {
22434 						fast_long_decrement_function(zptr);
22435 					}
22436 				} else {
22437 					ZVAL_DEREF(zptr);
22438 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
22439 					zval_opt_copy_ctor(zptr);
22440 					if (inc) {
22441 						increment_function(zptr);
22442 					} else {
22443 						decrement_function(zptr);
22444 					}
22445 				}
22446 			}
22447 		} else {
22448 			zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
22449 		}
22450 	} while (0);
22451 
22452 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22453 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22454 }
22455 
22456 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22457 {
22458 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22459 }
22460 
22461 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22462 {
22463 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
22464 }
22465 
22466 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22467 {
22468 	USE_OPLINE
22469 	zend_free_op free_op1;
22470 	zval *container;
22471 
22472 	SAVE_OPLINE();
22473 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22474 
22475 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
22476 
22477 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22478 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22479 	}
22480 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22481 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22482 }
22483 
22484 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22485 {
22486 	USE_OPLINE
22487 	zend_free_op free_op1;
22488 	zval *container;
22489 
22490 	SAVE_OPLINE();
22491 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22492 
22493 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
22494 
22495 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22496 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22497 	}
22498 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22499 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22500 }
22501 
22502 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22503 {
22504 	USE_OPLINE
22505 	zval *container;
22506 	zend_free_op free_op1;
22507 
22508 	SAVE_OPLINE();
22509 
22510 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
22511         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
22512             zend_throw_error(NULL, "Cannot use temporary expression in write context");
22513 
22514 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
22515 			ZVAL_UNDEF(EX_VAR(opline->result.var));
22516 			HANDLE_EXCEPTION();
22517         }
22518 		container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22519 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
22520 		if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22521 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22522 		}
22523 
22524 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22525 	} else {
22526 		if (IS_CV == IS_UNUSED) {
22527 			zend_throw_error(NULL, "Cannot use [] for reading");
22528 
22529 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
22530 			ZVAL_UNDEF(EX_VAR(opline->result.var));
22531 			HANDLE_EXCEPTION();
22532 		}
22533 		container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22534 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
22535 
22536 		zval_ptr_dtor_nogc(free_op1);
22537 	}
22538 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22539 }
22540 
22541 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22542 {
22543 	USE_OPLINE
22544 	zend_free_op free_op1;
22545 	zval *container;
22546 
22547 	SAVE_OPLINE();
22548 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22549 
22550 	zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
22551 
22552 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22553 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22554 	}
22555 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22556 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22557 }
22558 
22559 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22560 {
22561 	USE_OPLINE
22562 	zend_free_op free_op1;
22563 	zval *container;
22564 
22565 	zval *offset;
22566 
22567 	SAVE_OPLINE();
22568 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22569 
22570 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22571 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22572 	}
22573 
22574 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22575 
22576 	if (IS_VAR == IS_CONST ||
22577 	    (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
22578 		if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
22579 			container = Z_REFVAL_P(container);
22580 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
22581 				goto fetch_obj_r_no_object;
22582 			}
22583 		} else {
22584 			goto fetch_obj_r_no_object;
22585 		}
22586 	}
22587 
22588 	/* here we are sure we are dealing with an object */
22589 	do {
22590 		zend_object *zobj = Z_OBJ_P(container);
22591 		zval *retval;
22592 
22593 		if (IS_CV == IS_CONST &&
22594 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
22595 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
22596 
22597 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
22598 				retval = OBJ_PROP(zobj, prop_offset);
22599 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
22600 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
22601 					break;
22602 				}
22603 			} else if (EXPECTED(zobj->properties != NULL)) {
22604 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
22605 				if (EXPECTED(retval)) {
22606 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
22607 					break;
22608 				}
22609 			}
22610 		}
22611 
22612 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
22613 			zend_string *property_name;
22614 fetch_obj_r_no_object:
22615 			property_name = zval_get_string(offset);
22616 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
22617 			zend_string_release(property_name);
22618 			ZVAL_NULL(EX_VAR(opline->result.var));
22619 		} else {
22620 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
22621 
22622 			if (retval != EX_VAR(opline->result.var)) {
22623 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
22624 			}
22625 		}
22626 	} while (0);
22627 
22628 	zval_ptr_dtor_nogc(free_op1);
22629 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22630 }
22631 
22632 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22633 {
22634 	USE_OPLINE
22635 	zend_free_op free_op1;
22636 	zval *property;
22637 	zval *container;
22638 
22639 	SAVE_OPLINE();
22640 
22641 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22642 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22643 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22644 	}
22645 
22646 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22647 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
22648 
22649 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22650 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22651 	}
22652 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22653 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22654 }
22655 
22656 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22657 {
22658 	USE_OPLINE
22659 	zend_free_op free_op1;
22660 	zval *property;
22661 	zval *container;
22662 
22663 	SAVE_OPLINE();
22664 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22665 
22666 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22667 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22668 	}
22669 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22670 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
22671 
22672 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22673 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22674 	}
22675 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22676 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22677 }
22678 
22679 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22680 {
22681 	USE_OPLINE
22682 	zval *container;
22683 
22684 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
22685 		/* Behave like FETCH_OBJ_W */
22686 		zend_free_op free_op1;
22687 		zval *property;
22688 
22689 		SAVE_OPLINE();
22690 		container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22691 
22692 		if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22693 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22694 		}
22695 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
22696 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
22697 
22698 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22699 			ZVAL_UNDEF(EX_VAR(opline->result.var));
22700 			HANDLE_EXCEPTION();
22701 		}
22702 		property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22703 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
22704 
22705 		if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22706 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22707 		}
22708 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22709 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22710 	} else {
22711 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22712 	}
22713 }
22714 
22715 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22716 {
22717 	USE_OPLINE
22718 	zend_free_op free_op1;
22719 	zval *container, *property;
22720 
22721 	SAVE_OPLINE();
22722 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22723 
22724 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
22725 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22726 	}
22727 
22728 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22729 
22730 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
22731 
22732 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
22733 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
22734 	}
22735 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22736 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
22737 }
22738 
22739 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22740 {
22741 	USE_OPLINE
22742 	zend_free_op free_op1;
22743 	zval *object, *property, *value, tmp;
22744 
22745 	SAVE_OPLINE();
22746 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22747 
22748 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22749 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22750 	}
22751 
22752 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22753 	value = EX_CONSTANT((opline+1)->op1);
22754 
22755 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22756 		do {
22757 			if (Z_ISREF_P(object)) {
22758 				object = Z_REFVAL_P(object);
22759 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22760 					break;
22761 				}
22762 			}
22763 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
22764 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
22765 				zend_object *obj;
22766 
22767 				zval_ptr_dtor(object);
22768 				object_init(object);
22769 				Z_ADDREF_P(object);
22770 				obj = Z_OBJ_P(object);
22771 				zend_error(E_WARNING, "Creating default object from empty value");
22772 				if (GC_REFCOUNT(obj) == 1) {
22773 					/* the enclosing container was deleted, obj is unreferenced */
22774 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22775 						ZVAL_NULL(EX_VAR(opline->result.var));
22776 					}
22777 
22778 					OBJ_RELEASE(obj);
22779 					goto exit_assign_obj;
22780 				}
22781 				Z_DELREF_P(object);
22782 			} else {
22783 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
22784 					zend_string *property_name = zval_get_string(property);
22785 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
22786 					zend_string_release(property_name);
22787 				}
22788 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22789 					ZVAL_NULL(EX_VAR(opline->result.var));
22790 				}
22791 
22792 				goto exit_assign_obj;
22793 			}
22794 		} while (0);
22795 	}
22796 
22797 	if (IS_CV == IS_CONST &&
22798 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
22799 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
22800 		zend_object *zobj = Z_OBJ_P(object);
22801 		zval *property_val;
22802 
22803 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
22804 			property_val = OBJ_PROP(zobj, prop_offset);
22805 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
22806 fast_assign_obj:
22807 				value = zend_assign_to_variable(property_val, value, IS_CONST);
22808 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22809 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22810 				}
22811 				goto exit_assign_obj;
22812 			}
22813 		} else {
22814 			if (EXPECTED(zobj->properties != NULL)) {
22815 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
22816 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
22817 						GC_REFCOUNT(zobj->properties)--;
22818 					}
22819 					zobj->properties = zend_array_dup(zobj->properties);
22820 				}
22821 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
22822 				if (property_val) {
22823 					goto fast_assign_obj;
22824 				}
22825 			}
22826 
22827 			if (!zobj->ce->__set) {
22828 
22829 				if (EXPECTED(zobj->properties == NULL)) {
22830 					rebuild_object_properties(zobj);
22831 				}
22832 				if (IS_CONST == IS_CONST) {
22833 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
22834 						Z_ADDREF_P(value);
22835 					}
22836 				} else if (IS_CONST != IS_TMP_VAR) {
22837 					if (Z_ISREF_P(value)) {
22838 						if (IS_CONST == IS_VAR) {
22839 							zend_reference *ref = Z_REF_P(value);
22840 							if (--GC_REFCOUNT(ref) == 0) {
22841 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
22842 								efree_size(ref, sizeof(zend_reference));
22843 								value = &tmp;
22844 							} else {
22845 								value = Z_REFVAL_P(value);
22846 								if (Z_REFCOUNTED_P(value)) {
22847 									Z_ADDREF_P(value);
22848 								}
22849 							}
22850 						} else {
22851 							value = Z_REFVAL_P(value);
22852 							if (Z_REFCOUNTED_P(value)) {
22853 								Z_ADDREF_P(value);
22854 							}
22855 						}
22856 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
22857 						Z_ADDREF_P(value);
22858 					}
22859 				}
22860 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
22861 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22862 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22863 				}
22864 				goto exit_assign_obj;
22865 			}
22866 		}
22867 	}
22868 
22869 	if (!Z_OBJ_HT_P(object)->write_property) {
22870 		zend_string *property_name = zval_get_string(property);
22871 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
22872 		zend_string_release(property_name);
22873 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22874 			ZVAL_NULL(EX_VAR(opline->result.var));
22875 		}
22876 
22877 		goto exit_assign_obj;
22878 	}
22879 
22880 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
22881 		ZVAL_DEREF(value);
22882 	}
22883 
22884 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
22885 
22886 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22887 		ZVAL_COPY(EX_VAR(opline->result.var), value);
22888 	}
22889 
22890 exit_assign_obj:
22891 
22892 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
22893 	/* assign_obj has two opcodes! */
22894 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
22895 }
22896 
22897 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
22898 {
22899 	USE_OPLINE
22900 	zend_free_op free_op1, free_op_data;
22901 	zval *object, *property, *value, tmp;
22902 
22903 	SAVE_OPLINE();
22904 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
22905 
22906 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
22907 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
22908 	}
22909 
22910 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
22911 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
22912 
22913 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
22914 		do {
22915 			if (Z_ISREF_P(object)) {
22916 				object = Z_REFVAL_P(object);
22917 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
22918 					break;
22919 				}
22920 			}
22921 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
22922 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
22923 				zend_object *obj;
22924 
22925 				zval_ptr_dtor(object);
22926 				object_init(object);
22927 				Z_ADDREF_P(object);
22928 				obj = Z_OBJ_P(object);
22929 				zend_error(E_WARNING, "Creating default object from empty value");
22930 				if (GC_REFCOUNT(obj) == 1) {
22931 					/* the enclosing container was deleted, obj is unreferenced */
22932 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22933 						ZVAL_NULL(EX_VAR(opline->result.var));
22934 					}
22935 					zval_ptr_dtor_nogc(free_op_data);
22936 					OBJ_RELEASE(obj);
22937 					goto exit_assign_obj;
22938 				}
22939 				Z_DELREF_P(object);
22940 			} else {
22941 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
22942 					zend_string *property_name = zval_get_string(property);
22943 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
22944 					zend_string_release(property_name);
22945 				}
22946 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22947 					ZVAL_NULL(EX_VAR(opline->result.var));
22948 				}
22949 				zval_ptr_dtor_nogc(free_op_data);
22950 				goto exit_assign_obj;
22951 			}
22952 		} while (0);
22953 	}
22954 
22955 	if (IS_CV == IS_CONST &&
22956 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
22957 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
22958 		zend_object *zobj = Z_OBJ_P(object);
22959 		zval *property_val;
22960 
22961 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
22962 			property_val = OBJ_PROP(zobj, prop_offset);
22963 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
22964 fast_assign_obj:
22965 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
22966 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
22967 					ZVAL_COPY(EX_VAR(opline->result.var), value);
22968 				}
22969 				goto exit_assign_obj;
22970 			}
22971 		} else {
22972 			if (EXPECTED(zobj->properties != NULL)) {
22973 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
22974 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
22975 						GC_REFCOUNT(zobj->properties)--;
22976 					}
22977 					zobj->properties = zend_array_dup(zobj->properties);
22978 				}
22979 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
22980 				if (property_val) {
22981 					goto fast_assign_obj;
22982 				}
22983 			}
22984 
22985 			if (!zobj->ce->__set) {
22986 
22987 				if (EXPECTED(zobj->properties == NULL)) {
22988 					rebuild_object_properties(zobj);
22989 				}
22990 				if (IS_TMP_VAR == IS_CONST) {
22991 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
22992 						Z_ADDREF_P(value);
22993 					}
22994 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
22995 					if (Z_ISREF_P(value)) {
22996 						if (IS_TMP_VAR == IS_VAR) {
22997 							zend_reference *ref = Z_REF_P(value);
22998 							if (--GC_REFCOUNT(ref) == 0) {
22999 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
23000 								efree_size(ref, sizeof(zend_reference));
23001 								value = &tmp;
23002 							} else {
23003 								value = Z_REFVAL_P(value);
23004 								if (Z_REFCOUNTED_P(value)) {
23005 									Z_ADDREF_P(value);
23006 								}
23007 							}
23008 						} else {
23009 							value = Z_REFVAL_P(value);
23010 							if (Z_REFCOUNTED_P(value)) {
23011 								Z_ADDREF_P(value);
23012 							}
23013 						}
23014 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
23015 						Z_ADDREF_P(value);
23016 					}
23017 				}
23018 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
23019 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23020 					ZVAL_COPY(EX_VAR(opline->result.var), value);
23021 				}
23022 				goto exit_assign_obj;
23023 			}
23024 		}
23025 	}
23026 
23027 	if (!Z_OBJ_HT_P(object)->write_property) {
23028 		zend_string *property_name = zval_get_string(property);
23029 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
23030 		zend_string_release(property_name);
23031 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23032 			ZVAL_NULL(EX_VAR(opline->result.var));
23033 		}
23034 		zval_ptr_dtor_nogc(free_op_data);
23035 		goto exit_assign_obj;
23036 	}
23037 
23038 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
23039 		ZVAL_DEREF(value);
23040 	}
23041 
23042 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
23043 
23044 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23045 		ZVAL_COPY(EX_VAR(opline->result.var), value);
23046 	}
23047 	zval_ptr_dtor_nogc(free_op_data);
23048 exit_assign_obj:
23049 
23050 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23051 	/* assign_obj has two opcodes! */
23052 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23053 }
23054 
23055 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23056 {
23057 	USE_OPLINE
23058 	zend_free_op free_op1, free_op_data;
23059 	zval *object, *property, *value, tmp;
23060 
23061 	SAVE_OPLINE();
23062 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23063 
23064 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
23065 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
23066 	}
23067 
23068 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23069 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23070 
23071 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
23072 		do {
23073 			if (Z_ISREF_P(object)) {
23074 				object = Z_REFVAL_P(object);
23075 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
23076 					break;
23077 				}
23078 			}
23079 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
23080 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
23081 				zend_object *obj;
23082 
23083 				zval_ptr_dtor(object);
23084 				object_init(object);
23085 				Z_ADDREF_P(object);
23086 				obj = Z_OBJ_P(object);
23087 				zend_error(E_WARNING, "Creating default object from empty value");
23088 				if (GC_REFCOUNT(obj) == 1) {
23089 					/* the enclosing container was deleted, obj is unreferenced */
23090 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23091 						ZVAL_NULL(EX_VAR(opline->result.var));
23092 					}
23093 					zval_ptr_dtor_nogc(free_op_data);
23094 					OBJ_RELEASE(obj);
23095 					goto exit_assign_obj;
23096 				}
23097 				Z_DELREF_P(object);
23098 			} else {
23099 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
23100 					zend_string *property_name = zval_get_string(property);
23101 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
23102 					zend_string_release(property_name);
23103 				}
23104 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23105 					ZVAL_NULL(EX_VAR(opline->result.var));
23106 				}
23107 				zval_ptr_dtor_nogc(free_op_data);
23108 				goto exit_assign_obj;
23109 			}
23110 		} while (0);
23111 	}
23112 
23113 	if (IS_CV == IS_CONST &&
23114 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
23115 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
23116 		zend_object *zobj = Z_OBJ_P(object);
23117 		zval *property_val;
23118 
23119 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
23120 			property_val = OBJ_PROP(zobj, prop_offset);
23121 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
23122 fast_assign_obj:
23123 				value = zend_assign_to_variable(property_val, value, IS_VAR);
23124 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23125 					ZVAL_COPY(EX_VAR(opline->result.var), value);
23126 				}
23127 				goto exit_assign_obj;
23128 			}
23129 		} else {
23130 			if (EXPECTED(zobj->properties != NULL)) {
23131 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
23132 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
23133 						GC_REFCOUNT(zobj->properties)--;
23134 					}
23135 					zobj->properties = zend_array_dup(zobj->properties);
23136 				}
23137 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
23138 				if (property_val) {
23139 					goto fast_assign_obj;
23140 				}
23141 			}
23142 
23143 			if (!zobj->ce->__set) {
23144 
23145 				if (EXPECTED(zobj->properties == NULL)) {
23146 					rebuild_object_properties(zobj);
23147 				}
23148 				if (IS_VAR == IS_CONST) {
23149 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
23150 						Z_ADDREF_P(value);
23151 					}
23152 				} else if (IS_VAR != IS_TMP_VAR) {
23153 					if (Z_ISREF_P(value)) {
23154 						if (IS_VAR == IS_VAR) {
23155 							zend_reference *ref = Z_REF_P(value);
23156 							if (--GC_REFCOUNT(ref) == 0) {
23157 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
23158 								efree_size(ref, sizeof(zend_reference));
23159 								value = &tmp;
23160 							} else {
23161 								value = Z_REFVAL_P(value);
23162 								if (Z_REFCOUNTED_P(value)) {
23163 									Z_ADDREF_P(value);
23164 								}
23165 							}
23166 						} else {
23167 							value = Z_REFVAL_P(value);
23168 							if (Z_REFCOUNTED_P(value)) {
23169 								Z_ADDREF_P(value);
23170 							}
23171 						}
23172 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
23173 						Z_ADDREF_P(value);
23174 					}
23175 				}
23176 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
23177 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23178 					ZVAL_COPY(EX_VAR(opline->result.var), value);
23179 				}
23180 				goto exit_assign_obj;
23181 			}
23182 		}
23183 	}
23184 
23185 	if (!Z_OBJ_HT_P(object)->write_property) {
23186 		zend_string *property_name = zval_get_string(property);
23187 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
23188 		zend_string_release(property_name);
23189 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23190 			ZVAL_NULL(EX_VAR(opline->result.var));
23191 		}
23192 		zval_ptr_dtor_nogc(free_op_data);
23193 		goto exit_assign_obj;
23194 	}
23195 
23196 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
23197 		ZVAL_DEREF(value);
23198 	}
23199 
23200 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
23201 
23202 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23203 		ZVAL_COPY(EX_VAR(opline->result.var), value);
23204 	}
23205 	zval_ptr_dtor_nogc(free_op_data);
23206 exit_assign_obj:
23207 
23208 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23209 	/* assign_obj has two opcodes! */
23210 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23211 }
23212 
23213 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23214 {
23215 	USE_OPLINE
23216 	zend_free_op free_op1;
23217 	zval *object, *property, *value, tmp;
23218 
23219 	SAVE_OPLINE();
23220 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23221 
23222 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
23223 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
23224 	}
23225 
23226 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23227 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23228 
23229 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
23230 		do {
23231 			if (Z_ISREF_P(object)) {
23232 				object = Z_REFVAL_P(object);
23233 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
23234 					break;
23235 				}
23236 			}
23237 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
23238 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
23239 				zend_object *obj;
23240 
23241 				zval_ptr_dtor(object);
23242 				object_init(object);
23243 				Z_ADDREF_P(object);
23244 				obj = Z_OBJ_P(object);
23245 				zend_error(E_WARNING, "Creating default object from empty value");
23246 				if (GC_REFCOUNT(obj) == 1) {
23247 					/* the enclosing container was deleted, obj is unreferenced */
23248 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23249 						ZVAL_NULL(EX_VAR(opline->result.var));
23250 					}
23251 
23252 					OBJ_RELEASE(obj);
23253 					goto exit_assign_obj;
23254 				}
23255 				Z_DELREF_P(object);
23256 			} else {
23257 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
23258 					zend_string *property_name = zval_get_string(property);
23259 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
23260 					zend_string_release(property_name);
23261 				}
23262 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23263 					ZVAL_NULL(EX_VAR(opline->result.var));
23264 				}
23265 
23266 				goto exit_assign_obj;
23267 			}
23268 		} while (0);
23269 	}
23270 
23271 	if (IS_CV == IS_CONST &&
23272 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
23273 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
23274 		zend_object *zobj = Z_OBJ_P(object);
23275 		zval *property_val;
23276 
23277 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
23278 			property_val = OBJ_PROP(zobj, prop_offset);
23279 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
23280 fast_assign_obj:
23281 				value = zend_assign_to_variable(property_val, value, IS_CV);
23282 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23283 					ZVAL_COPY(EX_VAR(opline->result.var), value);
23284 				}
23285 				goto exit_assign_obj;
23286 			}
23287 		} else {
23288 			if (EXPECTED(zobj->properties != NULL)) {
23289 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
23290 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
23291 						GC_REFCOUNT(zobj->properties)--;
23292 					}
23293 					zobj->properties = zend_array_dup(zobj->properties);
23294 				}
23295 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
23296 				if (property_val) {
23297 					goto fast_assign_obj;
23298 				}
23299 			}
23300 
23301 			if (!zobj->ce->__set) {
23302 
23303 				if (EXPECTED(zobj->properties == NULL)) {
23304 					rebuild_object_properties(zobj);
23305 				}
23306 				if (IS_CV == IS_CONST) {
23307 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
23308 						Z_ADDREF_P(value);
23309 					}
23310 				} else if (IS_CV != IS_TMP_VAR) {
23311 					if (Z_ISREF_P(value)) {
23312 						if (IS_CV == IS_VAR) {
23313 							zend_reference *ref = Z_REF_P(value);
23314 							if (--GC_REFCOUNT(ref) == 0) {
23315 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
23316 								efree_size(ref, sizeof(zend_reference));
23317 								value = &tmp;
23318 							} else {
23319 								value = Z_REFVAL_P(value);
23320 								if (Z_REFCOUNTED_P(value)) {
23321 									Z_ADDREF_P(value);
23322 								}
23323 							}
23324 						} else {
23325 							value = Z_REFVAL_P(value);
23326 							if (Z_REFCOUNTED_P(value)) {
23327 								Z_ADDREF_P(value);
23328 							}
23329 						}
23330 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
23331 						Z_ADDREF_P(value);
23332 					}
23333 				}
23334 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
23335 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23336 					ZVAL_COPY(EX_VAR(opline->result.var), value);
23337 				}
23338 				goto exit_assign_obj;
23339 			}
23340 		}
23341 	}
23342 
23343 	if (!Z_OBJ_HT_P(object)->write_property) {
23344 		zend_string *property_name = zval_get_string(property);
23345 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
23346 		zend_string_release(property_name);
23347 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23348 			ZVAL_NULL(EX_VAR(opline->result.var));
23349 		}
23350 
23351 		goto exit_assign_obj;
23352 	}
23353 
23354 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
23355 		ZVAL_DEREF(value);
23356 	}
23357 
23358 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
23359 
23360 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23361 		ZVAL_COPY(EX_VAR(opline->result.var), value);
23362 	}
23363 
23364 exit_assign_obj:
23365 
23366 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23367 	/* assign_obj has two opcodes! */
23368 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23369 }
23370 
23371 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23372 {
23373 	USE_OPLINE
23374 	zend_free_op free_op1;
23375 	zval *object_ptr;
23376 
23377 	zval *value;
23378 	zval *variable_ptr;
23379 	zval *dim;
23380 
23381 	SAVE_OPLINE();
23382 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23383 
23384 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23385 try_assign_dim_array:
23386 		SEPARATE_ARRAY(object_ptr);
23387 		if (IS_CV == IS_UNUSED) {
23388 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
23389 			if (UNEXPECTED(variable_ptr == NULL)) {
23390 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
23391 				goto assign_dim_error;
23392 			}
23393 		} else {
23394 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
23395 			if (IS_CV == IS_CONST) {
23396 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23397 			} else {
23398 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23399 			}
23400 			if (UNEXPECTED(variable_ptr == NULL)) {
23401 				goto assign_dim_error;
23402 			}
23403 		}
23404 		value = EX_CONSTANT((opline+1)->op1);
23405 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
23406 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23407 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23408 		}
23409 	} else {
23410 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23411 			object_ptr = Z_REFVAL_P(object_ptr);
23412 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23413 				goto try_assign_dim_array;
23414 			}
23415 		}
23416 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23417 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23418 			value = EX_CONSTANT((opline+1)->op1);
23419 
23420 			zend_assign_to_object_dim(object_ptr, dim, value);
23421 
23422 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23423 				ZVAL_COPY(EX_VAR(opline->result.var), value);
23424 			}
23425 
23426 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23427 			if (IS_CV == IS_UNUSED) {
23428 				zend_throw_error(NULL, "[] operator not supported for strings");
23429 
23430 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23431 				UNDEF_RESULT();
23432 				HANDLE_EXCEPTION();
23433 			} else {
23434 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23435 				value = EX_CONSTANT((opline+1)->op1);
23436 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
23437 
23438 			}
23439 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23440 			ZVAL_NEW_ARR(object_ptr);
23441 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
23442 			goto try_assign_dim_array;
23443 		} else {
23444 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23445 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
23446 			}
23447 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23448 assign_dim_error:
23449 
23450 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23451 				ZVAL_NULL(EX_VAR(opline->result.var));
23452 			}
23453 		}
23454 	}
23455 	if (IS_CV != IS_UNUSED) {
23456 
23457 	}
23458 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23459 	/* assign_dim has two opcodes! */
23460 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23461 }
23462 
23463 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23464 {
23465 	USE_OPLINE
23466 	zend_free_op free_op1;
23467 	zval *object_ptr;
23468 	zend_free_op free_op_data;
23469 	zval *value;
23470 	zval *variable_ptr;
23471 	zval *dim;
23472 
23473 	SAVE_OPLINE();
23474 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23475 
23476 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23477 try_assign_dim_array:
23478 		SEPARATE_ARRAY(object_ptr);
23479 		if (IS_CV == IS_UNUSED) {
23480 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
23481 			if (UNEXPECTED(variable_ptr == NULL)) {
23482 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
23483 				goto assign_dim_error;
23484 			}
23485 		} else {
23486 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
23487 			if (IS_CV == IS_CONST) {
23488 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23489 			} else {
23490 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23491 			}
23492 			if (UNEXPECTED(variable_ptr == NULL)) {
23493 				goto assign_dim_error;
23494 			}
23495 		}
23496 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23497 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
23498 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23499 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23500 		}
23501 	} else {
23502 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23503 			object_ptr = Z_REFVAL_P(object_ptr);
23504 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23505 				goto try_assign_dim_array;
23506 			}
23507 		}
23508 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23509 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23510 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23511 
23512 			zend_assign_to_object_dim(object_ptr, dim, value);
23513 
23514 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23515 				ZVAL_COPY(EX_VAR(opline->result.var), value);
23516 			}
23517 
23518 			zval_ptr_dtor_nogc(free_op_data);
23519 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23520 			if (IS_CV == IS_UNUSED) {
23521 				zend_throw_error(NULL, "[] operator not supported for strings");
23522 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23523 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23524 				UNDEF_RESULT();
23525 				HANDLE_EXCEPTION();
23526 			} else {
23527 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23528 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23529 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
23530 				zval_ptr_dtor_nogc(free_op_data);
23531 			}
23532 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23533 			ZVAL_NEW_ARR(object_ptr);
23534 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
23535 			goto try_assign_dim_array;
23536 		} else {
23537 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23538 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
23539 			}
23540 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23541 assign_dim_error:
23542 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23543 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23544 				ZVAL_NULL(EX_VAR(opline->result.var));
23545 			}
23546 		}
23547 	}
23548 	if (IS_CV != IS_UNUSED) {
23549 
23550 	}
23551 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23552 	/* assign_dim has two opcodes! */
23553 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23554 }
23555 
23556 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23557 {
23558 	USE_OPLINE
23559 	zend_free_op free_op1;
23560 	zval *object_ptr;
23561 	zend_free_op free_op_data;
23562 	zval *value;
23563 	zval *variable_ptr;
23564 	zval *dim;
23565 
23566 	SAVE_OPLINE();
23567 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23568 
23569 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23570 try_assign_dim_array:
23571 		SEPARATE_ARRAY(object_ptr);
23572 		if (IS_CV == IS_UNUSED) {
23573 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
23574 			if (UNEXPECTED(variable_ptr == NULL)) {
23575 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
23576 				goto assign_dim_error;
23577 			}
23578 		} else {
23579 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
23580 			if (IS_CV == IS_CONST) {
23581 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23582 			} else {
23583 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23584 			}
23585 			if (UNEXPECTED(variable_ptr == NULL)) {
23586 				goto assign_dim_error;
23587 			}
23588 		}
23589 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23590 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
23591 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23592 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23593 		}
23594 	} else {
23595 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23596 			object_ptr = Z_REFVAL_P(object_ptr);
23597 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23598 				goto try_assign_dim_array;
23599 			}
23600 		}
23601 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23602 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23603 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23604 
23605 			zend_assign_to_object_dim(object_ptr, dim, value);
23606 
23607 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23608 				ZVAL_COPY(EX_VAR(opline->result.var), value);
23609 			}
23610 
23611 			zval_ptr_dtor_nogc(free_op_data);
23612 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23613 			if (IS_CV == IS_UNUSED) {
23614 				zend_throw_error(NULL, "[] operator not supported for strings");
23615 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23616 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23617 				UNDEF_RESULT();
23618 				HANDLE_EXCEPTION();
23619 			} else {
23620 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23621 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
23622 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
23623 				zval_ptr_dtor_nogc(free_op_data);
23624 			}
23625 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23626 			ZVAL_NEW_ARR(object_ptr);
23627 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
23628 			goto try_assign_dim_array;
23629 		} else {
23630 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23631 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
23632 			}
23633 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23634 assign_dim_error:
23635 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
23636 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23637 				ZVAL_NULL(EX_VAR(opline->result.var));
23638 			}
23639 		}
23640 	}
23641 	if (IS_CV != IS_UNUSED) {
23642 
23643 	}
23644 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23645 	/* assign_dim has two opcodes! */
23646 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23647 }
23648 
23649 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23650 {
23651 	USE_OPLINE
23652 	zend_free_op free_op1;
23653 	zval *object_ptr;
23654 
23655 	zval *value;
23656 	zval *variable_ptr;
23657 	zval *dim;
23658 
23659 	SAVE_OPLINE();
23660 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23661 
23662 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23663 try_assign_dim_array:
23664 		SEPARATE_ARRAY(object_ptr);
23665 		if (IS_CV == IS_UNUSED) {
23666 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
23667 			if (UNEXPECTED(variable_ptr == NULL)) {
23668 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
23669 				goto assign_dim_error;
23670 			}
23671 		} else {
23672 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
23673 			if (IS_CV == IS_CONST) {
23674 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23675 			} else {
23676 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
23677 			}
23678 			if (UNEXPECTED(variable_ptr == NULL)) {
23679 				goto assign_dim_error;
23680 			}
23681 		}
23682 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23683 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
23684 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23685 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23686 		}
23687 	} else {
23688 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
23689 			object_ptr = Z_REFVAL_P(object_ptr);
23690 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
23691 				goto try_assign_dim_array;
23692 			}
23693 		}
23694 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
23695 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23696 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23697 
23698 			zend_assign_to_object_dim(object_ptr, dim, value);
23699 
23700 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23701 				ZVAL_COPY(EX_VAR(opline->result.var), value);
23702 			}
23703 
23704 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
23705 			if (IS_CV == IS_UNUSED) {
23706 				zend_throw_error(NULL, "[] operator not supported for strings");
23707 
23708 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23709 				UNDEF_RESULT();
23710 				HANDLE_EXCEPTION();
23711 			} else {
23712 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23713 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
23714 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
23715 
23716 			}
23717 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
23718 			ZVAL_NEW_ARR(object_ptr);
23719 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
23720 			goto try_assign_dim_array;
23721 		} else {
23722 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
23723 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
23724 			}
23725 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23726 assign_dim_error:
23727 
23728 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23729 				ZVAL_NULL(EX_VAR(opline->result.var));
23730 			}
23731 		}
23732 	}
23733 	if (IS_CV != IS_UNUSED) {
23734 
23735 	}
23736 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23737 	/* assign_dim has two opcodes! */
23738 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
23739 }
23740 
23741 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23742 {
23743 	USE_OPLINE
23744 	zend_free_op free_op1;
23745 	zval *value;
23746 	zval *variable_ptr;
23747 
23748 	SAVE_OPLINE();
23749 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23750 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23751 
23752 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
23753 
23754 		if (UNEXPECTED(0)) {
23755 			ZVAL_NULL(EX_VAR(opline->result.var));
23756 		}
23757 	} else {
23758 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
23759 		if (UNEXPECTED(0)) {
23760 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23761 		}
23762 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23763 		/* zend_assign_to_variable() always takes care of op2, never free it! */
23764 	}
23765 
23766 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23767 }
23768 
23769 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23770 {
23771 	USE_OPLINE
23772 	zend_free_op free_op1;
23773 	zval *value;
23774 	zval *variable_ptr;
23775 
23776 	SAVE_OPLINE();
23777 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
23778 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23779 
23780 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
23781 
23782 		if (UNEXPECTED(1)) {
23783 			ZVAL_NULL(EX_VAR(opline->result.var));
23784 		}
23785 	} else {
23786 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
23787 		if (UNEXPECTED(1)) {
23788 			ZVAL_COPY(EX_VAR(opline->result.var), value);
23789 		}
23790 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23791 		/* zend_assign_to_variable() always takes care of op2, never free it! */
23792 	}
23793 
23794 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23795 }
23796 
23797 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23798 {
23799 	USE_OPLINE
23800 	zend_free_op free_op1;
23801 	zval *variable_ptr;
23802 	zval *value_ptr;
23803 
23804 	SAVE_OPLINE();
23805 	value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
23806 	variable_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
23807 
23808 	if (IS_VAR == IS_VAR &&
23809 	    UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
23810 	    UNEXPECTED(!Z_ISREF_P(EX_VAR(opline->op1.var))) &&
23811 	    UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
23812 
23813 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
23814 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23815 
23816 		UNDEF_RESULT();
23817 		HANDLE_EXCEPTION();
23818 
23819 	} else if (IS_CV == IS_VAR &&
23820 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
23821 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
23822 		zend_error(E_NOTICE, "Only variables should be assigned by reference");
23823 		if (UNEXPECTED(EG(exception) != NULL)) {
23824 
23825 			UNDEF_RESULT();
23826 			HANDLE_EXCEPTION();
23827 		}
23828 
23829 		value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_CV);
23830 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23831 			ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
23832 		}
23833 		/* zend_assign_to_variable() always takes care of op2, never free it! */
23834 
23835 	} else {
23836 
23837 		if ((IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
23838 		    (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
23839 			variable_ptr = &EG(uninitialized_zval);
23840 		} else {
23841 			zend_assign_to_variable_reference(variable_ptr, value_ptr);
23842 		}
23843 
23844 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
23845 			ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
23846 		}
23847 
23848 	}
23849 
23850 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
23851 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
23852 }
23853 
23854 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
23855 {
23856 	USE_OPLINE
23857 	zval *function_name;
23858 	zend_class_entry *ce;
23859 	zend_object *object;
23860 	zend_function *fbc;
23861 	zend_execute_data *call;
23862 
23863 	SAVE_OPLINE();
23864 
23865 	if (IS_VAR == IS_CONST) {
23866 		/* no function found. try a static method in class */
23867 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
23868 		if (UNEXPECTED(ce == NULL)) {
23869 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
23870 			if (UNEXPECTED(ce == NULL)) {
23871 				ZEND_ASSERT(EG(exception));
23872 
23873 				HANDLE_EXCEPTION();
23874 			}
23875 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
23876 		}
23877 	} else if (IS_VAR == IS_UNUSED) {
23878 		ce = zend_fetch_class(NULL, opline->op1.num);
23879 		if (UNEXPECTED(ce == NULL)) {
23880 			ZEND_ASSERT(EG(exception));
23881 
23882 			HANDLE_EXCEPTION();
23883 		}
23884 	} else {
23885 		ce = Z_CE_P(EX_VAR(opline->op1.var));
23886 	}
23887 
23888 	if (IS_VAR == IS_CONST &&
23889 	    IS_CV == IS_CONST &&
23890 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
23891 		/* nothing to do */
23892 	} else if (IS_VAR != IS_CONST &&
23893 	           IS_CV == IS_CONST &&
23894 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
23895 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
23896 	} else if (IS_CV != IS_UNUSED) {
23897 
23898 
23899 		function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
23900 		if (IS_CV != IS_CONST) {
23901 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
23902 				do {
23903 					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
23904 						function_name = Z_REFVAL_P(function_name);
23905 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
23906 							break;
23907 						}
23908 					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
23909 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
23910 						if (UNEXPECTED(EG(exception) != NULL)) {
23911 							HANDLE_EXCEPTION();
23912 						}
23913 					}
23914 					zend_throw_error(NULL, "Function name must be a string");
23915 
23916 					HANDLE_EXCEPTION();
23917 				} while (0);
23918  			}
23919 		}
23920 
23921 		if (ce->get_static_method) {
23922 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
23923 		} else {
23924 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
23925 		}
23926 		if (UNEXPECTED(fbc == NULL)) {
23927 			if (EXPECTED(!EG(exception))) {
23928 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
23929 			}
23930 
23931 			HANDLE_EXCEPTION();
23932 		}
23933 		if (IS_CV == IS_CONST &&
23934 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
23935 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
23936 			if (IS_VAR == IS_CONST) {
23937 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
23938 			} else {
23939 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
23940 			}
23941 		}
23942 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
23943 			init_func_run_time_cache(&fbc->op_array);
23944 		}
23945 		if (IS_CV != IS_CONST) {
23946 
23947 		}
23948 	} else {
23949 		if (UNEXPECTED(ce->constructor == NULL)) {
23950 			zend_throw_error(NULL, "Cannot call constructor");
23951 			HANDLE_EXCEPTION();
23952 		}
23953 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
23954 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
23955 			HANDLE_EXCEPTION();
23956 		}
23957 		fbc = ce->constructor;
23958 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
23959 			init_func_run_time_cache(&fbc->op_array);
23960 		}
23961 	}
23962 
23963 	object = NULL;
23964 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
23965 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
23966 			object = Z_OBJ(EX(This));
23967 			ce = object->ce;
23968 		} else {
23969 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
23970 				/* Allowed for PHP 4 compatibility. */
23971 				zend_error(
23972 					E_DEPRECATED,
23973 					"Non-static method %s::%s() should not be called statically",
23974 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
23975 				if (UNEXPECTED(EG(exception) != NULL)) {
23976 					HANDLE_EXCEPTION();
23977 				}
23978 			} else {
23979 				/* An internal function assumes $this is present and won't check that.
23980 				 * So PHP would crash by allowing the call. */
23981 				zend_throw_error(
23982 					zend_ce_error,
23983 					"Non-static method %s::%s() cannot be called statically",
23984 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
23985 				HANDLE_EXCEPTION();
23986 			}
23987 		}
23988 	}
23989 
23990 	if (IS_VAR == IS_UNUSED) {
23991 		/* previous opcode is ZEND_FETCH_CLASS */
23992 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
23993 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
23994 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
23995 				ce = Z_OBJCE(EX(This));
23996 			} else {
23997 				ce = Z_CE(EX(This));
23998 			}
23999 		}
24000 	}
24001 
24002 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
24003 		fbc, opline->extended_value, ce, object);
24004 	call->prev_execute_data = EX(call);
24005 	EX(call) = call;
24006 
24007 	ZEND_VM_NEXT_OPCODE();
24008 }
24009 
24010 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24011 {
24012 	USE_OPLINE
24013 	zend_free_op free_op1;
24014 	zval *expr_ptr, new_expr;
24015 
24016 	SAVE_OPLINE();
24017 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
24018 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
24019 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24020 		ZVAL_MAKE_REF(expr_ptr);
24021 		Z_ADDREF_P(expr_ptr);
24022 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24023 	} else {
24024 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24025 		if (IS_VAR == IS_TMP_VAR) {
24026 			/* pass */
24027 		} else if (IS_VAR == IS_CONST) {
24028 			if (Z_REFCOUNTED_P(expr_ptr)) {
24029 				Z_ADDREF_P(expr_ptr);
24030 			}
24031 		} else if (IS_VAR == IS_CV) {
24032 			ZVAL_DEREF(expr_ptr);
24033 			if (Z_REFCOUNTED_P(expr_ptr)) {
24034 				Z_ADDREF_P(expr_ptr);
24035 			}
24036 		} else /* if (IS_VAR == IS_VAR) */ {
24037 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
24038 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
24039 
24040 				expr_ptr = Z_REFVAL_P(expr_ptr);
24041 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
24042 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
24043 					expr_ptr = &new_expr;
24044 					efree_size(ref, sizeof(zend_reference));
24045 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
24046 					Z_ADDREF_P(expr_ptr);
24047 				}
24048 			}
24049 		}
24050 	}
24051 
24052 	if (IS_CV != IS_UNUSED) {
24053 
24054 		zval *offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
24055 		zend_string *str;
24056 		zend_ulong hval;
24057 
24058 add_again:
24059 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
24060 			str = Z_STR_P(offset);
24061 			if (IS_CV != IS_CONST) {
24062 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
24063 					goto num_index;
24064 				}
24065 			}
24066 str_index:
24067 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
24068 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
24069 			hval = Z_LVAL_P(offset);
24070 num_index:
24071 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
24072 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
24073 			offset = Z_REFVAL_P(offset);
24074 			goto add_again;
24075 		} else if (Z_TYPE_P(offset) == IS_NULL) {
24076 			str = ZSTR_EMPTY_ALLOC();
24077 			goto str_index;
24078 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
24079 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
24080 			goto num_index;
24081 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
24082 			hval = 0;
24083 			goto num_index;
24084 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
24085 			hval = 1;
24086 			goto num_index;
24087 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
24088 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
24089 			str = ZSTR_EMPTY_ALLOC();
24090 			goto str_index;
24091 		} else {
24092 			zend_error(E_WARNING, "Illegal offset type");
24093 			zval_ptr_dtor(expr_ptr);
24094 		}
24095 
24096 	} else {
24097 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
24098 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
24099 			zval_ptr_dtor(expr_ptr);
24100 		}
24101 	}
24102 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24103 }
24104 
24105 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24106 {
24107 	zval *array;
24108 	uint32_t size;
24109 	USE_OPLINE
24110 
24111 	array = EX_VAR(opline->result.var);
24112 	if (IS_VAR != IS_UNUSED) {
24113 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
24114 	} else {
24115 		size = 0;
24116 	}
24117 	ZVAL_NEW_ARR(array);
24118 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
24119 
24120 	if (IS_VAR != IS_UNUSED) {
24121 		/* Explicitly initialize array as not-packed if flag is set */
24122 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
24123 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
24124 		}
24125 	}
24126 
24127 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24128 }
24129 
24130 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24131 {
24132 	USE_OPLINE
24133 	zend_free_op free_op1;
24134 	zval *container;
24135 	zval *offset;
24136 	zend_ulong hval;
24137 	zend_string *key;
24138 
24139 	SAVE_OPLINE();
24140 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24141 	offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
24142 
24143 	do {
24144 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
24145 			HashTable *ht;
24146 
24147 unset_dim_array:
24148 			SEPARATE_ARRAY(container);
24149 			ht = Z_ARRVAL_P(container);
24150 offset_again:
24151 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
24152 				key = Z_STR_P(offset);
24153 				if (IS_CV != IS_CONST) {
24154 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
24155 						goto num_index_dim;
24156 					}
24157 				}
24158 str_index_dim:
24159 				if (ht == &EG(symbol_table)) {
24160 					zend_delete_global_variable(key);
24161 				} else {
24162 					zend_hash_del(ht, key);
24163 				}
24164 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
24165 				hval = Z_LVAL_P(offset);
24166 num_index_dim:
24167 				zend_hash_index_del(ht, hval);
24168 			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
24169 				offset = Z_REFVAL_P(offset);
24170 				goto offset_again;
24171 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
24172 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
24173 				goto num_index_dim;
24174 			} else if (Z_TYPE_P(offset) == IS_NULL) {
24175 				key = ZSTR_EMPTY_ALLOC();
24176 				goto str_index_dim;
24177 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
24178 				hval = 0;
24179 				goto num_index_dim;
24180 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
24181 				hval = 1;
24182 				goto num_index_dim;
24183 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
24184 				hval = Z_RES_HANDLE_P(offset);
24185 				goto num_index_dim;
24186 			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
24187 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
24188 				key = ZSTR_EMPTY_ALLOC();
24189 				goto str_index_dim;
24190 			} else {
24191 				zend_error(E_WARNING, "Illegal offset type in unset");
24192 			}
24193 			break;
24194 		} else if (Z_ISREF_P(container)) {
24195 			container = Z_REFVAL_P(container);
24196 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
24197 				goto unset_dim_array;
24198 			}
24199 		}
24200 		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
24201 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
24202 		}
24203 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
24204 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
24205 		}
24206 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
24207 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
24208 				zend_throw_error(NULL, "Cannot use object as array");
24209 			} else {
24210 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
24211 			}
24212 		} else if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
24213 			zend_throw_error(NULL, "Cannot unset string offsets");
24214 		}
24215 	} while (0);
24216 
24217 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24218 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24219 }
24220 
24221 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24222 {
24223 	USE_OPLINE
24224 	zend_free_op free_op1;
24225 	zval *container;
24226 	zval *offset;
24227 
24228 	SAVE_OPLINE();
24229 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24230 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
24231 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24232 	}
24233 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
24234 
24235 	do {
24236 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
24237 			if (Z_ISREF_P(container)) {
24238 				container = Z_REFVAL_P(container);
24239 				if (Z_TYPE_P(container) != IS_OBJECT) {
24240 					break;
24241 				}
24242 			} else {
24243 				break;
24244 			}
24245 		}
24246 		if (Z_OBJ_HT_P(container)->unset_property) {
24247 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
24248 		} else {
24249 			zend_string *property_name = zval_get_string(offset);
24250 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
24251 			zend_string_release(property_name);
24252 		}
24253 	} while (0);
24254 
24255 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24256 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24257 }
24258 
24259 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24260 {
24261 	USE_OPLINE
24262 
24263 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
24264 
24265 	SAVE_OPLINE();
24266 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
24267 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
24268 
24269 		zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
24270 		UNDEF_RESULT();
24271 		HANDLE_EXCEPTION();
24272 	}
24273 
24274 	/* Destroy the previously yielded value */
24275 	zval_ptr_dtor(&generator->value);
24276 
24277 	/* Destroy the previously yielded key */
24278 	zval_ptr_dtor(&generator->key);
24279 
24280 	/* Set the new yielded value */
24281 	if (IS_VAR != IS_UNUSED) {
24282 		zend_free_op free_op1;
24283 
24284 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
24285 			/* Constants and temporary variables aren't yieldable by reference,
24286 			 * but we still allow them with a notice. */
24287 			if (IS_VAR & (IS_CONST|IS_TMP_VAR)) {
24288 				zval *value;
24289 
24290 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
24291 
24292 				value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24293 				ZVAL_COPY_VALUE(&generator->value, value);
24294 				if (IS_VAR == IS_CONST) {
24295 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
24296 						Z_ADDREF(generator->value);
24297 					}
24298 				}
24299 			} else {
24300 				zval *value_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24301 
24302 				/* If a function call result is yielded and the function did
24303 				 * not return by reference we throw a notice. */
24304 				if (IS_VAR == IS_VAR &&
24305 				    (value_ptr == &EG(uninitialized_zval) ||
24306 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
24307 				      !Z_ISREF_P(value_ptr)))) {
24308 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
24309 				} else {
24310 					ZVAL_MAKE_REF(value_ptr);
24311 				}
24312 				ZVAL_COPY(&generator->value, value_ptr);
24313 
24314 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24315 			}
24316 		} else {
24317 			zval *value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24318 
24319 			/* Consts, temporary variables and references need copying */
24320 			if (IS_VAR == IS_CONST) {
24321 				ZVAL_COPY_VALUE(&generator->value, value);
24322 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
24323 					Z_ADDREF(generator->value);
24324 				}
24325 			} else if (IS_VAR == IS_TMP_VAR) {
24326 				ZVAL_COPY_VALUE(&generator->value, value);
24327             } else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
24328 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
24329 				zval_ptr_dtor_nogc(free_op1);
24330 			} else {
24331 				ZVAL_COPY_VALUE(&generator->value, value);
24332 				if (IS_VAR == IS_CV) {
24333 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
24334 				}
24335 			}
24336 		}
24337 	} else {
24338 		/* If no value was specified yield null */
24339 		ZVAL_NULL(&generator->value);
24340 	}
24341 
24342 	/* Set the new yielded key */
24343 	if (IS_CV != IS_UNUSED) {
24344 
24345 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
24346 
24347 		/* Consts, temporary variables and references need copying */
24348 		if (IS_CV == IS_CONST) {
24349 			ZVAL_COPY_VALUE(&generator->key, key);
24350 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
24351 				Z_ADDREF(generator->key);
24352 			}
24353 		} else if (IS_CV == IS_TMP_VAR) {
24354 			ZVAL_COPY_VALUE(&generator->key, key);
24355 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
24356 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
24357 
24358 		} else {
24359 			ZVAL_COPY_VALUE(&generator->key, key);
24360 			if (IS_CV == IS_CV) {
24361 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
24362 			}
24363 		}
24364 
24365 		if (Z_TYPE(generator->key) == IS_LONG
24366 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
24367 		) {
24368 			generator->largest_used_integer_key = Z_LVAL(generator->key);
24369 		}
24370 	} else {
24371 		/* If no key was specified we use auto-increment keys */
24372 		generator->largest_used_integer_key++;
24373 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
24374 	}
24375 
24376 	if (RETURN_VALUE_USED(opline)) {
24377 		/* If the return value of yield is used set the send
24378 		 * target and initialize it to NULL */
24379 		generator->send_target = EX_VAR(opline->result.var);
24380 		ZVAL_NULL(generator->send_target);
24381 	} else {
24382 		generator->send_target = NULL;
24383 	}
24384 
24385 	/* We increment to the next op, so we are at the correct position when the
24386 	 * generator is resumed. */
24387 	ZEND_VM_INC_OPCODE();
24388 
24389 	/* The GOTO VM uses a local opline variable. We need to set the opline
24390 	 * variable in execute_data so we don't resume at an old position. */
24391 	SAVE_OPLINE();
24392 
24393 	ZEND_VM_RETURN();
24394 }
24395 
24396 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24397 {
24398 	USE_OPLINE
24399 	zval *array;
24400 	zval *value, *variable_ptr;
24401 	uint32_t value_type;
24402 	HashTable *fe_ht;
24403 	HashPosition pos;
24404 	Bucket *p;
24405 
24406 	array = EX_VAR(opline->op1.var);
24407 	SAVE_OPLINE();
24408 	fe_ht = Z_ARRVAL_P(array);
24409 	pos = Z_FE_POS_P(array);
24410 	p = fe_ht->arData + pos;
24411 	while (1) {
24412 		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
24413 			/* reached end of iteration */
24414 			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
24415 			ZEND_VM_CONTINUE();
24416 		}
24417 		value = &p->val;
24418 		value_type = Z_TYPE_INFO_P(value);
24419 		if (EXPECTED(value_type != IS_UNDEF)) {
24420 			if (UNEXPECTED(value_type == IS_INDIRECT)) {
24421 				value = Z_INDIRECT_P(value);
24422 				value_type = Z_TYPE_INFO_P(value);
24423 				if (EXPECTED(value_type != IS_UNDEF)) {
24424 					break;
24425 				}
24426 			} else {
24427 				break;
24428 			}
24429 		}
24430 		pos++;
24431 		p++;
24432 	}
24433 	Z_FE_POS_P(array) = pos + 1;
24434 	if (0) {
24435 		if (!p->key) {
24436 			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
24437 		} else {
24438 			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
24439 		}
24440 	}
24441 
24442 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
24443 	zend_assign_to_variable(variable_ptr, value, IS_CV);
24444 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24445 }
24446 
24447 
24448 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24449 {
24450 	USE_OPLINE
24451 	zval *array;
24452 	zval *value, *variable_ptr;
24453 	uint32_t value_type;
24454 	HashTable *fe_ht;
24455 	HashPosition pos;
24456 	Bucket *p;
24457 
24458 	array = EX_VAR(opline->op1.var);
24459 	SAVE_OPLINE();
24460 	fe_ht = Z_ARRVAL_P(array);
24461 	pos = Z_FE_POS_P(array);
24462 	p = fe_ht->arData + pos;
24463 	while (1) {
24464 		if (UNEXPECTED(pos >= fe_ht->nNumUsed)) {
24465 			/* reached end of iteration */
24466 			ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
24467 			ZEND_VM_CONTINUE();
24468 		}
24469 		value = &p->val;
24470 		value_type = Z_TYPE_INFO_P(value);
24471 		if (EXPECTED(value_type != IS_UNDEF)) {
24472 			if (UNEXPECTED(value_type == IS_INDIRECT)) {
24473 				value = Z_INDIRECT_P(value);
24474 				value_type = Z_TYPE_INFO_P(value);
24475 				if (EXPECTED(value_type != IS_UNDEF)) {
24476 					break;
24477 				}
24478 			} else {
24479 				break;
24480 			}
24481 		}
24482 		pos++;
24483 		p++;
24484 	}
24485 	Z_FE_POS_P(array) = pos + 1;
24486 	if (1) {
24487 		if (!p->key) {
24488 			ZVAL_LONG(EX_VAR(opline->result.var), p->h);
24489 		} else {
24490 			ZVAL_STR_COPY(EX_VAR(opline->result.var), p->key);
24491 		}
24492 	}
24493 
24494 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
24495 	zend_assign_to_variable(variable_ptr, value, IS_CV);
24496 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24497 }
24498 
24499 
24500 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24501 {
24502 	USE_OPLINE
24503 	zend_free_op free_op1, free_op2, free_op_data1;
24504 	zval *object;
24505 	zval *property;
24506 	zval *value;
24507 	zval *zptr;
24508 
24509 	SAVE_OPLINE();
24510 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24511 
24512 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
24513 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24514 	}
24515 
24516 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24517 
24518 	do {
24519 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24520 
24521 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
24522 			ZVAL_DEREF(object);
24523 			if (UNEXPECTED(!make_real_object(object))) {
24524 				zend_string *property_name = zval_get_string(property);
24525 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
24526 				zend_string_release(property_name);
24527 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24528 					ZVAL_NULL(EX_VAR(opline->result.var));
24529 				}
24530 				break;
24531 			}
24532 		}
24533 
24534 		/* here we are sure we are dealing with an object */
24535 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
24536 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
24537 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
24538 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24539 					ZVAL_NULL(EX_VAR(opline->result.var));
24540 				}
24541 			} else {
24542 				ZVAL_DEREF(zptr);
24543 				SEPARATE_ZVAL_NOREF(zptr);
24544 
24545 				binary_op(zptr, zptr, value);
24546 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24547 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
24548 				}
24549 			}
24550 		} else {
24551 			zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
24552 		}
24553 	} while (0);
24554 
24555 	FREE_OP(free_op_data1);
24556 	zval_ptr_dtor_nogc(free_op2);
24557 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24558 	/* assign_obj has two opcodes! */
24559 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
24560 }
24561 
24562 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24563 {
24564 	USE_OPLINE
24565 	zend_free_op free_op1, free_op2, free_op_data1;
24566 	zval *var_ptr;
24567 	zval *value, *container, *dim;
24568 
24569 	SAVE_OPLINE();
24570 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24571 
24572 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
24573 assign_dim_op_array:
24574 		SEPARATE_ARRAY(container);
24575 assign_dim_op_new_array:
24576 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
24577 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
24578 			if (UNEXPECTED(!var_ptr)) {
24579 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
24580 				goto assign_dim_op_ret_null;
24581 			}
24582 		} else {
24583 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24584 
24585 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
24586 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
24587 			} else {
24588 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
24589 			}
24590 			if (UNEXPECTED(!var_ptr)) {
24591 				goto assign_dim_op_ret_null;
24592 			}
24593 			ZVAL_DEREF(var_ptr);
24594 			SEPARATE_ZVAL_NOREF(var_ptr);
24595 		}
24596 
24597 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24598 
24599 		binary_op(var_ptr, var_ptr, value);
24600 
24601 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24602 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
24603 		}
24604 	} else {
24605 		if (EXPECTED(Z_ISREF_P(container))) {
24606 			container = Z_REFVAL_P(container);
24607 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
24608 				goto assign_dim_op_array;
24609 			}
24610 		} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
24611 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
24612 assign_dim_op_convert_to_array:
24613 			ZVAL_NEW_ARR(container);
24614 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
24615 			goto assign_dim_op_new_array;
24616 		}
24617 
24618 		dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24619 
24620 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
24621 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24622 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
24623 		} else {
24624 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
24625 				if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
24626 					zend_throw_error(NULL, "[] operator not supported for strings");
24627 				} else {
24628 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
24629 					if (EXPECTED(EG(exception) == NULL)) {
24630 						zend_wrong_string_offset(EXECUTE_DATA_C);
24631 					}
24632 				}
24633 				UNDEF_RESULT();
24634 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
24635 				goto assign_dim_op_convert_to_array;
24636 			} else {
24637 				if (UNEXPECTED(IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
24638 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
24639 				}
24640 assign_dim_op_ret_null:
24641 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24642 					ZVAL_NULL(EX_VAR(opline->result.var));
24643 				}
24644 			}
24645 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
24646 		}
24647 	}
24648 
24649 	zval_ptr_dtor_nogc(free_op2);
24650 	FREE_OP(free_op_data1);
24651 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24652 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
24653 }
24654 
24655 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24656 {
24657 	USE_OPLINE
24658 	zend_free_op free_op1, free_op2;
24659 	zval *var_ptr;
24660 	zval *value;
24661 
24662 	SAVE_OPLINE();
24663 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24664 	var_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24665 
24666 	if (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
24667 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24668 			ZVAL_NULL(EX_VAR(opline->result.var));
24669 		}
24670 	} else {
24671 		ZVAL_DEREF(var_ptr);
24672 		SEPARATE_ZVAL_NOREF(var_ptr);
24673 
24674 		binary_op(var_ptr, var_ptr, value);
24675 
24676 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24677 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
24678 		}
24679 	}
24680 
24681 	zval_ptr_dtor_nogc(free_op2);
24682 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24683 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24684 }
24685 
24686 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24687 {
24688 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
24689 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24690 #else
24691 # if 0 || IS_VAR != IS_UNUSED
24692 	USE_OPLINE
24693 
24694 	if (EXPECTED(1)) {
24695 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24696 	}
24697 	if (EXPECTED(0)) {
24698 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24699 	}
24700 # endif
24701 
24702 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24703 #endif
24704 }
24705 
24706 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24707 {
24708 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
24709 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24710 #else
24711 # if 0 || IS_VAR != IS_UNUSED
24712 	USE_OPLINE
24713 
24714 	if (EXPECTED(0)) {
24715 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24716 	}
24717 	if (EXPECTED(1)) {
24718 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24719 	}
24720 # endif
24721 
24722 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24723 #endif
24724 }
24725 
24726 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
24727 {
24728 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
24729 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24730 #else
24731 # if 0 || IS_VAR != IS_UNUSED
24732 	USE_OPLINE
24733 
24734 	if (EXPECTED(0)) {
24735 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24736 	}
24737 	if (EXPECTED(0)) {
24738 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24739 	}
24740 # endif
24741 
24742 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_VAR_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24743 #endif
24744 }
24745 
24746 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24747 {
24748 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24749 }
24750 
24751 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24752 {
24753 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24754 }
24755 
24756 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24757 {
24758 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24759 }
24760 
24761 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24762 {
24763 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24764 }
24765 
24766 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24767 {
24768 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24769 }
24770 
24771 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24772 {
24773 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24774 }
24775 
24776 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24777 {
24778 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24779 }
24780 
24781 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24782 {
24783 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24784 }
24785 
24786 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24787 {
24788 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24789 }
24790 
24791 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24792 {
24793 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24794 }
24795 
24796 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24797 {
24798 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24799 }
24800 
24801 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24802 {
24803 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24804 }
24805 
24806 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24807 {
24808 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24809 }
24810 
24811 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24812 {
24813 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24814 }
24815 
24816 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24817 {
24818 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24819 }
24820 
24821 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24822 {
24823 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24824 }
24825 
24826 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24827 {
24828 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24829 }
24830 
24831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24832 {
24833 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24834 }
24835 
24836 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24837 {
24838 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24839 }
24840 
24841 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24842 {
24843 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24844 }
24845 
24846 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24847 {
24848 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24849 }
24850 
24851 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24852 {
24853 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24854 }
24855 
24856 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24857 {
24858 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24859 }
24860 
24861 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24862 {
24863 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24864 }
24865 
24866 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24867 {
24868 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24869 }
24870 
24871 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24872 {
24873 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24874 }
24875 
24876 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24877 {
24878 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24879 }
24880 
24881 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24882 {
24883 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24884 }
24885 
24886 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24887 {
24888 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24889 }
24890 
24891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24892 {
24893 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24894 }
24895 
24896 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24897 {
24898 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24899 }
24900 
24901 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24902 {
24903 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24904 }
24905 
24906 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24907 {
24908 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24909 }
24910 
24911 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24912 {
24913 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24914 }
24915 
24916 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24917 {
24918 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24919 }
24920 
24921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24922 {
24923 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_VAR_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24924 }
24925 
24926 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
24927 {
24928 	USE_OPLINE
24929 	zend_free_op free_op1, free_op2;
24930 	zval *object;
24931 	zval *property;
24932 	zval *zptr;
24933 
24934 	SAVE_OPLINE();
24935 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
24936 
24937 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
24938 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
24939 	}
24940 
24941 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
24942 
24943 	do {
24944 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
24945 			ZVAL_DEREF(object);
24946 			if (UNEXPECTED(!make_real_object(object))) {
24947 				zend_string *property_name = zval_get_string(property);
24948 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
24949 				zend_string_release(property_name);
24950 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24951 					ZVAL_NULL(EX_VAR(opline->result.var));
24952 				}
24953 				break;
24954 			}
24955 		}
24956 
24957 		/* here we are sure we are dealing with an object */
24958 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
24959 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
24960 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
24961 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24962 					ZVAL_NULL(EX_VAR(opline->result.var));
24963 				}
24964 			} else {
24965 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
24966 					if (inc) {
24967 						fast_long_increment_function(zptr);
24968 					} else {
24969 						fast_long_decrement_function(zptr);
24970 					}
24971 				} else {
24972 					ZVAL_DEREF(zptr);
24973 					SEPARATE_ZVAL_NOREF(zptr);
24974 
24975 					if (inc) {
24976 						increment_function(zptr);
24977 					} else {
24978 						decrement_function(zptr);
24979 					}
24980 				}
24981 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
24982 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
24983 				}
24984 			}
24985 		} else {
24986 			zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
24987 		}
24988 	} while (0);
24989 
24990 	zval_ptr_dtor_nogc(free_op2);
24991 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
24992 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
24993 }
24994 
24995 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
24996 {
24997 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
24998 }
24999 
25000 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25001 {
25002 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_VAR_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
25003 }
25004 
25005 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
25006 {
25007 	USE_OPLINE
25008 	zend_free_op free_op1, free_op2;
25009 	zval *object;
25010 	zval *property;
25011 	zval *zptr;
25012 
25013 	SAVE_OPLINE();
25014 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25015 
25016 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25017 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25018 	}
25019 
25020 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25021 
25022 	do {
25023 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25024 			ZVAL_DEREF(object);
25025 			if (UNEXPECTED(!make_real_object(object))) {
25026 				zend_string *property_name = zval_get_string(property);
25027 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
25028 				zend_string_release(property_name);
25029 				ZVAL_NULL(EX_VAR(opline->result.var));
25030 				break;
25031 			}
25032 		}
25033 
25034 		/* here we are sure we are dealing with an object */
25035 
25036 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
25037 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
25038 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
25039 				ZVAL_NULL(EX_VAR(opline->result.var));
25040 			} else {
25041 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
25042 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
25043 					if (inc) {
25044 						fast_long_increment_function(zptr);
25045 					} else {
25046 						fast_long_decrement_function(zptr);
25047 					}
25048 				} else {
25049 					ZVAL_DEREF(zptr);
25050 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
25051 					zval_opt_copy_ctor(zptr);
25052 					if (inc) {
25053 						increment_function(zptr);
25054 					} else {
25055 						decrement_function(zptr);
25056 					}
25057 				}
25058 			}
25059 		} else {
25060 			zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
25061 		}
25062 	} while (0);
25063 
25064 	zval_ptr_dtor_nogc(free_op2);
25065 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25066 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25067 }
25068 
25069 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25070 {
25071 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
25072 }
25073 
25074 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25075 {
25076 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_VAR_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
25077 }
25078 
25079 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25080 {
25081 	USE_OPLINE
25082 	zend_free_op free_op1, free_op2;
25083 	zval *container;
25084 
25085 	SAVE_OPLINE();
25086 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25087 
25088 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
25089 	zval_ptr_dtor_nogc(free_op2);
25090 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25091 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25092 	}
25093 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25094 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25095 }
25096 
25097 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25098 {
25099 	USE_OPLINE
25100 	zend_free_op free_op1, free_op2;
25101 	zval *container;
25102 
25103 	SAVE_OPLINE();
25104 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25105 
25106 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
25107 	zval_ptr_dtor_nogc(free_op2);
25108 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25109 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25110 	}
25111 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25112 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25113 }
25114 
25115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25116 {
25117 	USE_OPLINE
25118 	zval *container;
25119 	zend_free_op free_op1, free_op2;
25120 
25121 	SAVE_OPLINE();
25122 
25123 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
25124         if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
25125             zend_throw_error(NULL, "Cannot use temporary expression in write context");
25126 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
25127 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
25128 			ZVAL_UNDEF(EX_VAR(opline->result.var));
25129 			HANDLE_EXCEPTION();
25130         }
25131 		container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25132 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
25133 		if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25134 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25135 		}
25136 		zval_ptr_dtor_nogc(free_op2);
25137 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25138 	} else {
25139 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
25140 			zend_throw_error(NULL, "Cannot use [] for reading");
25141 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
25142 			zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
25143 			ZVAL_UNDEF(EX_VAR(opline->result.var));
25144 			HANDLE_EXCEPTION();
25145 		}
25146 		container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25147 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
25148 		zval_ptr_dtor_nogc(free_op2);
25149 		zval_ptr_dtor_nogc(free_op1);
25150 	}
25151 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25152 }
25153 
25154 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25155 {
25156 	USE_OPLINE
25157 	zend_free_op free_op1, free_op2;
25158 	zval *container;
25159 
25160 	SAVE_OPLINE();
25161 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25162 
25163 	zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
25164 	zval_ptr_dtor_nogc(free_op2);
25165 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25166 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25167 	}
25168 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25169 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25170 }
25171 
25172 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25173 {
25174 	USE_OPLINE
25175 	zend_free_op free_op1;
25176 	zval *container;
25177 	zend_free_op free_op2;
25178 	zval *offset;
25179 
25180 	SAVE_OPLINE();
25181 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25182 
25183 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
25184 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25185 	}
25186 
25187 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25188 
25189 	if (IS_VAR == IS_CONST ||
25190 	    (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
25191 		if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
25192 			container = Z_REFVAL_P(container);
25193 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
25194 				goto fetch_obj_r_no_object;
25195 			}
25196 		} else {
25197 			goto fetch_obj_r_no_object;
25198 		}
25199 	}
25200 
25201 	/* here we are sure we are dealing with an object */
25202 	do {
25203 		zend_object *zobj = Z_OBJ_P(container);
25204 		zval *retval;
25205 
25206 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25207 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
25208 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
25209 
25210 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
25211 				retval = OBJ_PROP(zobj, prop_offset);
25212 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
25213 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
25214 					break;
25215 				}
25216 			} else if (EXPECTED(zobj->properties != NULL)) {
25217 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
25218 				if (EXPECTED(retval)) {
25219 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
25220 					break;
25221 				}
25222 			}
25223 		}
25224 
25225 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
25226 			zend_string *property_name;
25227 fetch_obj_r_no_object:
25228 			property_name = zval_get_string(offset);
25229 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
25230 			zend_string_release(property_name);
25231 			ZVAL_NULL(EX_VAR(opline->result.var));
25232 		} else {
25233 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
25234 
25235 			if (retval != EX_VAR(opline->result.var)) {
25236 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
25237 			}
25238 		}
25239 	} while (0);
25240 
25241 	zval_ptr_dtor_nogc(free_op2);
25242 	zval_ptr_dtor_nogc(free_op1);
25243 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25244 }
25245 
25246 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25247 {
25248 	USE_OPLINE
25249 	zend_free_op free_op1, free_op2;
25250 	zval *property;
25251 	zval *container;
25252 
25253 	SAVE_OPLINE();
25254 
25255 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25256 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
25257 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25258 	}
25259 
25260 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25261 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
25262 	zval_ptr_dtor_nogc(free_op2);
25263 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25264 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25265 	}
25266 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25267 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25268 }
25269 
25270 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25271 {
25272 	USE_OPLINE
25273 	zend_free_op free_op1, free_op2;
25274 	zval *property;
25275 	zval *container;
25276 
25277 	SAVE_OPLINE();
25278 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25279 
25280 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
25281 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25282 	}
25283 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25284 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
25285 	zval_ptr_dtor_nogc(free_op2);
25286 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25287 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25288 	}
25289 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25290 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25291 }
25292 
25293 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25294 {
25295 	USE_OPLINE
25296 	zval *container;
25297 
25298 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
25299 		/* Behave like FETCH_OBJ_W */
25300 		zend_free_op free_op1, free_op2;
25301 		zval *property;
25302 
25303 		SAVE_OPLINE();
25304 		container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25305 
25306 		if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
25307 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25308 		}
25309 		if ((IS_VAR & (IS_CONST|IS_TMP_VAR))) {
25310 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
25311 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
25312 			if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25313 			ZVAL_UNDEF(EX_VAR(opline->result.var));
25314 			HANDLE_EXCEPTION();
25315 		}
25316 		property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25317 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
25318 		zval_ptr_dtor_nogc(free_op2);
25319 		if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25320 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25321 		}
25322 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25323 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25324 	} else {
25325 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25326 	}
25327 }
25328 
25329 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25330 {
25331 	USE_OPLINE
25332 	zend_free_op free_op1, free_op2;
25333 	zval *container, *property;
25334 
25335 	SAVE_OPLINE();
25336 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25337 
25338 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
25339 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25340 	}
25341 
25342 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25343 
25344 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_VAR, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
25345 	zval_ptr_dtor_nogc(free_op2);
25346 	if (IS_VAR == IS_VAR && READY_TO_DESTROY(free_op1)) {
25347 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
25348 	}
25349 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25350 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
25351 }
25352 
25353 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25354 {
25355 	USE_OPLINE
25356 	zend_free_op free_op1, free_op2;
25357 	zval *object, *property, *value, tmp;
25358 
25359 	SAVE_OPLINE();
25360 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25361 
25362 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25363 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25364 	}
25365 
25366 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25367 	value = EX_CONSTANT((opline+1)->op1);
25368 
25369 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25370 		do {
25371 			if (Z_ISREF_P(object)) {
25372 				object = Z_REFVAL_P(object);
25373 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
25374 					break;
25375 				}
25376 			}
25377 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
25378 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
25379 				zend_object *obj;
25380 
25381 				zval_ptr_dtor(object);
25382 				object_init(object);
25383 				Z_ADDREF_P(object);
25384 				obj = Z_OBJ_P(object);
25385 				zend_error(E_WARNING, "Creating default object from empty value");
25386 				if (GC_REFCOUNT(obj) == 1) {
25387 					/* the enclosing container was deleted, obj is unreferenced */
25388 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25389 						ZVAL_NULL(EX_VAR(opline->result.var));
25390 					}
25391 
25392 					OBJ_RELEASE(obj);
25393 					goto exit_assign_obj;
25394 				}
25395 				Z_DELREF_P(object);
25396 			} else {
25397 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
25398 					zend_string *property_name = zval_get_string(property);
25399 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25400 					zend_string_release(property_name);
25401 				}
25402 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25403 					ZVAL_NULL(EX_VAR(opline->result.var));
25404 				}
25405 
25406 				goto exit_assign_obj;
25407 			}
25408 		} while (0);
25409 	}
25410 
25411 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25412 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
25413 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
25414 		zend_object *zobj = Z_OBJ_P(object);
25415 		zval *property_val;
25416 
25417 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
25418 			property_val = OBJ_PROP(zobj, prop_offset);
25419 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
25420 fast_assign_obj:
25421 				value = zend_assign_to_variable(property_val, value, IS_CONST);
25422 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25423 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25424 				}
25425 				goto exit_assign_obj;
25426 			}
25427 		} else {
25428 			if (EXPECTED(zobj->properties != NULL)) {
25429 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
25430 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
25431 						GC_REFCOUNT(zobj->properties)--;
25432 					}
25433 					zobj->properties = zend_array_dup(zobj->properties);
25434 				}
25435 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
25436 				if (property_val) {
25437 					goto fast_assign_obj;
25438 				}
25439 			}
25440 
25441 			if (!zobj->ce->__set) {
25442 
25443 				if (EXPECTED(zobj->properties == NULL)) {
25444 					rebuild_object_properties(zobj);
25445 				}
25446 				if (IS_CONST == IS_CONST) {
25447 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
25448 						Z_ADDREF_P(value);
25449 					}
25450 				} else if (IS_CONST != IS_TMP_VAR) {
25451 					if (Z_ISREF_P(value)) {
25452 						if (IS_CONST == IS_VAR) {
25453 							zend_reference *ref = Z_REF_P(value);
25454 							if (--GC_REFCOUNT(ref) == 0) {
25455 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
25456 								efree_size(ref, sizeof(zend_reference));
25457 								value = &tmp;
25458 							} else {
25459 								value = Z_REFVAL_P(value);
25460 								if (Z_REFCOUNTED_P(value)) {
25461 									Z_ADDREF_P(value);
25462 								}
25463 							}
25464 						} else {
25465 							value = Z_REFVAL_P(value);
25466 							if (Z_REFCOUNTED_P(value)) {
25467 								Z_ADDREF_P(value);
25468 							}
25469 						}
25470 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
25471 						Z_ADDREF_P(value);
25472 					}
25473 				}
25474 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
25475 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25476 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25477 				}
25478 				goto exit_assign_obj;
25479 			}
25480 		}
25481 	}
25482 
25483 	if (!Z_OBJ_HT_P(object)->write_property) {
25484 		zend_string *property_name = zval_get_string(property);
25485 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25486 		zend_string_release(property_name);
25487 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25488 			ZVAL_NULL(EX_VAR(opline->result.var));
25489 		}
25490 
25491 		goto exit_assign_obj;
25492 	}
25493 
25494 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
25495 		ZVAL_DEREF(value);
25496 	}
25497 
25498 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
25499 
25500 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25501 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25502 	}
25503 
25504 exit_assign_obj:
25505 	zval_ptr_dtor_nogc(free_op2);
25506 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25507 	/* assign_obj has two opcodes! */
25508 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25509 }
25510 
25511 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25512 {
25513 	USE_OPLINE
25514 	zend_free_op free_op1, free_op2, free_op_data;
25515 	zval *object, *property, *value, tmp;
25516 
25517 	SAVE_OPLINE();
25518 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25519 
25520 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25521 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25522 	}
25523 
25524 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25525 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25526 
25527 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25528 		do {
25529 			if (Z_ISREF_P(object)) {
25530 				object = Z_REFVAL_P(object);
25531 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
25532 					break;
25533 				}
25534 			}
25535 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
25536 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
25537 				zend_object *obj;
25538 
25539 				zval_ptr_dtor(object);
25540 				object_init(object);
25541 				Z_ADDREF_P(object);
25542 				obj = Z_OBJ_P(object);
25543 				zend_error(E_WARNING, "Creating default object from empty value");
25544 				if (GC_REFCOUNT(obj) == 1) {
25545 					/* the enclosing container was deleted, obj is unreferenced */
25546 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25547 						ZVAL_NULL(EX_VAR(opline->result.var));
25548 					}
25549 					zval_ptr_dtor_nogc(free_op_data);
25550 					OBJ_RELEASE(obj);
25551 					goto exit_assign_obj;
25552 				}
25553 				Z_DELREF_P(object);
25554 			} else {
25555 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
25556 					zend_string *property_name = zval_get_string(property);
25557 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25558 					zend_string_release(property_name);
25559 				}
25560 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25561 					ZVAL_NULL(EX_VAR(opline->result.var));
25562 				}
25563 				zval_ptr_dtor_nogc(free_op_data);
25564 				goto exit_assign_obj;
25565 			}
25566 		} while (0);
25567 	}
25568 
25569 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25570 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
25571 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
25572 		zend_object *zobj = Z_OBJ_P(object);
25573 		zval *property_val;
25574 
25575 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
25576 			property_val = OBJ_PROP(zobj, prop_offset);
25577 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
25578 fast_assign_obj:
25579 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
25580 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25581 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25582 				}
25583 				goto exit_assign_obj;
25584 			}
25585 		} else {
25586 			if (EXPECTED(zobj->properties != NULL)) {
25587 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
25588 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
25589 						GC_REFCOUNT(zobj->properties)--;
25590 					}
25591 					zobj->properties = zend_array_dup(zobj->properties);
25592 				}
25593 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
25594 				if (property_val) {
25595 					goto fast_assign_obj;
25596 				}
25597 			}
25598 
25599 			if (!zobj->ce->__set) {
25600 
25601 				if (EXPECTED(zobj->properties == NULL)) {
25602 					rebuild_object_properties(zobj);
25603 				}
25604 				if (IS_TMP_VAR == IS_CONST) {
25605 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
25606 						Z_ADDREF_P(value);
25607 					}
25608 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
25609 					if (Z_ISREF_P(value)) {
25610 						if (IS_TMP_VAR == IS_VAR) {
25611 							zend_reference *ref = Z_REF_P(value);
25612 							if (--GC_REFCOUNT(ref) == 0) {
25613 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
25614 								efree_size(ref, sizeof(zend_reference));
25615 								value = &tmp;
25616 							} else {
25617 								value = Z_REFVAL_P(value);
25618 								if (Z_REFCOUNTED_P(value)) {
25619 									Z_ADDREF_P(value);
25620 								}
25621 							}
25622 						} else {
25623 							value = Z_REFVAL_P(value);
25624 							if (Z_REFCOUNTED_P(value)) {
25625 								Z_ADDREF_P(value);
25626 							}
25627 						}
25628 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
25629 						Z_ADDREF_P(value);
25630 					}
25631 				}
25632 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
25633 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25634 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25635 				}
25636 				goto exit_assign_obj;
25637 			}
25638 		}
25639 	}
25640 
25641 	if (!Z_OBJ_HT_P(object)->write_property) {
25642 		zend_string *property_name = zval_get_string(property);
25643 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25644 		zend_string_release(property_name);
25645 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25646 			ZVAL_NULL(EX_VAR(opline->result.var));
25647 		}
25648 		zval_ptr_dtor_nogc(free_op_data);
25649 		goto exit_assign_obj;
25650 	}
25651 
25652 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
25653 		ZVAL_DEREF(value);
25654 	}
25655 
25656 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
25657 
25658 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25659 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25660 	}
25661 	zval_ptr_dtor_nogc(free_op_data);
25662 exit_assign_obj:
25663 	zval_ptr_dtor_nogc(free_op2);
25664 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25665 	/* assign_obj has two opcodes! */
25666 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25667 }
25668 
25669 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25670 {
25671 	USE_OPLINE
25672 	zend_free_op free_op1, free_op2, free_op_data;
25673 	zval *object, *property, *value, tmp;
25674 
25675 	SAVE_OPLINE();
25676 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25677 
25678 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25679 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25680 	}
25681 
25682 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25683 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
25684 
25685 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25686 		do {
25687 			if (Z_ISREF_P(object)) {
25688 				object = Z_REFVAL_P(object);
25689 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
25690 					break;
25691 				}
25692 			}
25693 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
25694 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
25695 				zend_object *obj;
25696 
25697 				zval_ptr_dtor(object);
25698 				object_init(object);
25699 				Z_ADDREF_P(object);
25700 				obj = Z_OBJ_P(object);
25701 				zend_error(E_WARNING, "Creating default object from empty value");
25702 				if (GC_REFCOUNT(obj) == 1) {
25703 					/* the enclosing container was deleted, obj is unreferenced */
25704 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25705 						ZVAL_NULL(EX_VAR(opline->result.var));
25706 					}
25707 					zval_ptr_dtor_nogc(free_op_data);
25708 					OBJ_RELEASE(obj);
25709 					goto exit_assign_obj;
25710 				}
25711 				Z_DELREF_P(object);
25712 			} else {
25713 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
25714 					zend_string *property_name = zval_get_string(property);
25715 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25716 					zend_string_release(property_name);
25717 				}
25718 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25719 					ZVAL_NULL(EX_VAR(opline->result.var));
25720 				}
25721 				zval_ptr_dtor_nogc(free_op_data);
25722 				goto exit_assign_obj;
25723 			}
25724 		} while (0);
25725 	}
25726 
25727 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25728 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
25729 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
25730 		zend_object *zobj = Z_OBJ_P(object);
25731 		zval *property_val;
25732 
25733 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
25734 			property_val = OBJ_PROP(zobj, prop_offset);
25735 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
25736 fast_assign_obj:
25737 				value = zend_assign_to_variable(property_val, value, IS_VAR);
25738 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25739 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25740 				}
25741 				goto exit_assign_obj;
25742 			}
25743 		} else {
25744 			if (EXPECTED(zobj->properties != NULL)) {
25745 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
25746 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
25747 						GC_REFCOUNT(zobj->properties)--;
25748 					}
25749 					zobj->properties = zend_array_dup(zobj->properties);
25750 				}
25751 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
25752 				if (property_val) {
25753 					goto fast_assign_obj;
25754 				}
25755 			}
25756 
25757 			if (!zobj->ce->__set) {
25758 
25759 				if (EXPECTED(zobj->properties == NULL)) {
25760 					rebuild_object_properties(zobj);
25761 				}
25762 				if (IS_VAR == IS_CONST) {
25763 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
25764 						Z_ADDREF_P(value);
25765 					}
25766 				} else if (IS_VAR != IS_TMP_VAR) {
25767 					if (Z_ISREF_P(value)) {
25768 						if (IS_VAR == IS_VAR) {
25769 							zend_reference *ref = Z_REF_P(value);
25770 							if (--GC_REFCOUNT(ref) == 0) {
25771 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
25772 								efree_size(ref, sizeof(zend_reference));
25773 								value = &tmp;
25774 							} else {
25775 								value = Z_REFVAL_P(value);
25776 								if (Z_REFCOUNTED_P(value)) {
25777 									Z_ADDREF_P(value);
25778 								}
25779 							}
25780 						} else {
25781 							value = Z_REFVAL_P(value);
25782 							if (Z_REFCOUNTED_P(value)) {
25783 								Z_ADDREF_P(value);
25784 							}
25785 						}
25786 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
25787 						Z_ADDREF_P(value);
25788 					}
25789 				}
25790 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
25791 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25792 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25793 				}
25794 				goto exit_assign_obj;
25795 			}
25796 		}
25797 	}
25798 
25799 	if (!Z_OBJ_HT_P(object)->write_property) {
25800 		zend_string *property_name = zval_get_string(property);
25801 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25802 		zend_string_release(property_name);
25803 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25804 			ZVAL_NULL(EX_VAR(opline->result.var));
25805 		}
25806 		zval_ptr_dtor_nogc(free_op_data);
25807 		goto exit_assign_obj;
25808 	}
25809 
25810 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
25811 		ZVAL_DEREF(value);
25812 	}
25813 
25814 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
25815 
25816 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25817 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25818 	}
25819 	zval_ptr_dtor_nogc(free_op_data);
25820 exit_assign_obj:
25821 	zval_ptr_dtor_nogc(free_op2);
25822 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25823 	/* assign_obj has two opcodes! */
25824 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25825 }
25826 
25827 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25828 {
25829 	USE_OPLINE
25830 	zend_free_op free_op1, free_op2;
25831 	zval *object, *property, *value, tmp;
25832 
25833 	SAVE_OPLINE();
25834 	object = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25835 
25836 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
25837 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
25838 	}
25839 
25840 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
25841 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
25842 
25843 	if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
25844 		do {
25845 			if (Z_ISREF_P(object)) {
25846 				object = Z_REFVAL_P(object);
25847 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
25848 					break;
25849 				}
25850 			}
25851 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
25852 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
25853 				zend_object *obj;
25854 
25855 				zval_ptr_dtor(object);
25856 				object_init(object);
25857 				Z_ADDREF_P(object);
25858 				obj = Z_OBJ_P(object);
25859 				zend_error(E_WARNING, "Creating default object from empty value");
25860 				if (GC_REFCOUNT(obj) == 1) {
25861 					/* the enclosing container was deleted, obj is unreferenced */
25862 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25863 						ZVAL_NULL(EX_VAR(opline->result.var));
25864 					}
25865 
25866 					OBJ_RELEASE(obj);
25867 					goto exit_assign_obj;
25868 				}
25869 				Z_DELREF_P(object);
25870 			} else {
25871 				if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
25872 					zend_string *property_name = zval_get_string(property);
25873 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25874 					zend_string_release(property_name);
25875 				}
25876 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25877 					ZVAL_NULL(EX_VAR(opline->result.var));
25878 				}
25879 
25880 				goto exit_assign_obj;
25881 			}
25882 		} while (0);
25883 	}
25884 
25885 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
25886 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
25887 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
25888 		zend_object *zobj = Z_OBJ_P(object);
25889 		zval *property_val;
25890 
25891 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
25892 			property_val = OBJ_PROP(zobj, prop_offset);
25893 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
25894 fast_assign_obj:
25895 				value = zend_assign_to_variable(property_val, value, IS_CV);
25896 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25897 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25898 				}
25899 				goto exit_assign_obj;
25900 			}
25901 		} else {
25902 			if (EXPECTED(zobj->properties != NULL)) {
25903 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
25904 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
25905 						GC_REFCOUNT(zobj->properties)--;
25906 					}
25907 					zobj->properties = zend_array_dup(zobj->properties);
25908 				}
25909 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
25910 				if (property_val) {
25911 					goto fast_assign_obj;
25912 				}
25913 			}
25914 
25915 			if (!zobj->ce->__set) {
25916 
25917 				if (EXPECTED(zobj->properties == NULL)) {
25918 					rebuild_object_properties(zobj);
25919 				}
25920 				if (IS_CV == IS_CONST) {
25921 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
25922 						Z_ADDREF_P(value);
25923 					}
25924 				} else if (IS_CV != IS_TMP_VAR) {
25925 					if (Z_ISREF_P(value)) {
25926 						if (IS_CV == IS_VAR) {
25927 							zend_reference *ref = Z_REF_P(value);
25928 							if (--GC_REFCOUNT(ref) == 0) {
25929 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
25930 								efree_size(ref, sizeof(zend_reference));
25931 								value = &tmp;
25932 							} else {
25933 								value = Z_REFVAL_P(value);
25934 								if (Z_REFCOUNTED_P(value)) {
25935 									Z_ADDREF_P(value);
25936 								}
25937 							}
25938 						} else {
25939 							value = Z_REFVAL_P(value);
25940 							if (Z_REFCOUNTED_P(value)) {
25941 								Z_ADDREF_P(value);
25942 							}
25943 						}
25944 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
25945 						Z_ADDREF_P(value);
25946 					}
25947 				}
25948 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
25949 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25950 					ZVAL_COPY(EX_VAR(opline->result.var), value);
25951 				}
25952 				goto exit_assign_obj;
25953 			}
25954 		}
25955 	}
25956 
25957 	if (!Z_OBJ_HT_P(object)->write_property) {
25958 		zend_string *property_name = zval_get_string(property);
25959 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
25960 		zend_string_release(property_name);
25961 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25962 			ZVAL_NULL(EX_VAR(opline->result.var));
25963 		}
25964 
25965 		goto exit_assign_obj;
25966 	}
25967 
25968 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
25969 		ZVAL_DEREF(value);
25970 	}
25971 
25972 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
25973 
25974 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
25975 		ZVAL_COPY(EX_VAR(opline->result.var), value);
25976 	}
25977 
25978 exit_assign_obj:
25979 	zval_ptr_dtor_nogc(free_op2);
25980 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
25981 	/* assign_obj has two opcodes! */
25982 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
25983 }
25984 
25985 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
25986 {
25987 	USE_OPLINE
25988 	zend_free_op free_op1;
25989 	zval *object_ptr;
25990 	zend_free_op free_op2;
25991 	zval *value;
25992 	zval *variable_ptr;
25993 	zval *dim;
25994 
25995 	SAVE_OPLINE();
25996 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
25997 
25998 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
25999 try_assign_dim_array:
26000 		SEPARATE_ARRAY(object_ptr);
26001 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26002 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
26003 			if (UNEXPECTED(variable_ptr == NULL)) {
26004 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
26005 				goto assign_dim_error;
26006 			}
26007 		} else {
26008 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26009 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
26010 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26011 			} else {
26012 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26013 			}
26014 			if (UNEXPECTED(variable_ptr == NULL)) {
26015 				goto assign_dim_error;
26016 			}
26017 		}
26018 		value = EX_CONSTANT((opline+1)->op1);
26019 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
26020 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26021 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26022 		}
26023 	} else {
26024 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
26025 			object_ptr = Z_REFVAL_P(object_ptr);
26026 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26027 				goto try_assign_dim_array;
26028 			}
26029 		}
26030 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
26031 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26032 			value = EX_CONSTANT((opline+1)->op1);
26033 
26034 			zend_assign_to_object_dim(object_ptr, dim, value);
26035 
26036 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26037 				ZVAL_COPY(EX_VAR(opline->result.var), value);
26038 			}
26039 
26040 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
26041 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26042 				zend_throw_error(NULL, "[] operator not supported for strings");
26043 
26044 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26045 				UNDEF_RESULT();
26046 				HANDLE_EXCEPTION();
26047 			} else {
26048 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26049 				value = EX_CONSTANT((opline+1)->op1);
26050 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
26051 
26052 			}
26053 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
26054 			ZVAL_NEW_ARR(object_ptr);
26055 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
26056 			goto try_assign_dim_array;
26057 		} else {
26058 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
26059 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
26060 			}
26061 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26062 assign_dim_error:
26063 
26064 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26065 				ZVAL_NULL(EX_VAR(opline->result.var));
26066 			}
26067 		}
26068 	}
26069 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
26070 		zval_ptr_dtor_nogc(free_op2);
26071 	}
26072 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26073 	/* assign_dim has two opcodes! */
26074 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
26075 }
26076 
26077 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26078 {
26079 	USE_OPLINE
26080 	zend_free_op free_op1;
26081 	zval *object_ptr;
26082 	zend_free_op free_op2, free_op_data;
26083 	zval *value;
26084 	zval *variable_ptr;
26085 	zval *dim;
26086 
26087 	SAVE_OPLINE();
26088 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26089 
26090 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26091 try_assign_dim_array:
26092 		SEPARATE_ARRAY(object_ptr);
26093 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26094 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
26095 			if (UNEXPECTED(variable_ptr == NULL)) {
26096 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
26097 				goto assign_dim_error;
26098 			}
26099 		} else {
26100 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26101 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
26102 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26103 			} else {
26104 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26105 			}
26106 			if (UNEXPECTED(variable_ptr == NULL)) {
26107 				goto assign_dim_error;
26108 			}
26109 		}
26110 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
26111 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
26112 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26113 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26114 		}
26115 	} else {
26116 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
26117 			object_ptr = Z_REFVAL_P(object_ptr);
26118 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26119 				goto try_assign_dim_array;
26120 			}
26121 		}
26122 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
26123 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26124 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
26125 
26126 			zend_assign_to_object_dim(object_ptr, dim, value);
26127 
26128 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26129 				ZVAL_COPY(EX_VAR(opline->result.var), value);
26130 			}
26131 
26132 			zval_ptr_dtor_nogc(free_op_data);
26133 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
26134 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26135 				zend_throw_error(NULL, "[] operator not supported for strings");
26136 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
26137 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26138 				UNDEF_RESULT();
26139 				HANDLE_EXCEPTION();
26140 			} else {
26141 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26142 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
26143 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
26144 				zval_ptr_dtor_nogc(free_op_data);
26145 			}
26146 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
26147 			ZVAL_NEW_ARR(object_ptr);
26148 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
26149 			goto try_assign_dim_array;
26150 		} else {
26151 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
26152 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
26153 			}
26154 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26155 assign_dim_error:
26156 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
26157 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26158 				ZVAL_NULL(EX_VAR(opline->result.var));
26159 			}
26160 		}
26161 	}
26162 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
26163 		zval_ptr_dtor_nogc(free_op2);
26164 	}
26165 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26166 	/* assign_dim has two opcodes! */
26167 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
26168 }
26169 
26170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26171 {
26172 	USE_OPLINE
26173 	zend_free_op free_op1;
26174 	zval *object_ptr;
26175 	zend_free_op free_op2, free_op_data;
26176 	zval *value;
26177 	zval *variable_ptr;
26178 	zval *dim;
26179 
26180 	SAVE_OPLINE();
26181 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26182 
26183 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26184 try_assign_dim_array:
26185 		SEPARATE_ARRAY(object_ptr);
26186 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26187 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
26188 			if (UNEXPECTED(variable_ptr == NULL)) {
26189 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
26190 				goto assign_dim_error;
26191 			}
26192 		} else {
26193 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26194 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
26195 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26196 			} else {
26197 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26198 			}
26199 			if (UNEXPECTED(variable_ptr == NULL)) {
26200 				goto assign_dim_error;
26201 			}
26202 		}
26203 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
26204 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
26205 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26206 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26207 		}
26208 	} else {
26209 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
26210 			object_ptr = Z_REFVAL_P(object_ptr);
26211 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26212 				goto try_assign_dim_array;
26213 			}
26214 		}
26215 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
26216 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26217 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
26218 
26219 			zend_assign_to_object_dim(object_ptr, dim, value);
26220 
26221 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26222 				ZVAL_COPY(EX_VAR(opline->result.var), value);
26223 			}
26224 
26225 			zval_ptr_dtor_nogc(free_op_data);
26226 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
26227 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26228 				zend_throw_error(NULL, "[] operator not supported for strings");
26229 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
26230 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26231 				UNDEF_RESULT();
26232 				HANDLE_EXCEPTION();
26233 			} else {
26234 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26235 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
26236 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
26237 				zval_ptr_dtor_nogc(free_op_data);
26238 			}
26239 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
26240 			ZVAL_NEW_ARR(object_ptr);
26241 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
26242 			goto try_assign_dim_array;
26243 		} else {
26244 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
26245 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
26246 			}
26247 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26248 assign_dim_error:
26249 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
26250 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26251 				ZVAL_NULL(EX_VAR(opline->result.var));
26252 			}
26253 		}
26254 	}
26255 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
26256 		zval_ptr_dtor_nogc(free_op2);
26257 	}
26258 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26259 	/* assign_dim has two opcodes! */
26260 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
26261 }
26262 
26263 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26264 {
26265 	USE_OPLINE
26266 	zend_free_op free_op1;
26267 	zval *object_ptr;
26268 	zend_free_op free_op2;
26269 	zval *value;
26270 	zval *variable_ptr;
26271 	zval *dim;
26272 
26273 	SAVE_OPLINE();
26274 	object_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26275 
26276 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26277 try_assign_dim_array:
26278 		SEPARATE_ARRAY(object_ptr);
26279 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26280 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
26281 			if (UNEXPECTED(variable_ptr == NULL)) {
26282 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
26283 				goto assign_dim_error;
26284 			}
26285 		} else {
26286 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26287 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
26288 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26289 			} else {
26290 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
26291 			}
26292 			if (UNEXPECTED(variable_ptr == NULL)) {
26293 				goto assign_dim_error;
26294 			}
26295 		}
26296 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
26297 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
26298 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26299 			ZVAL_COPY(EX_VAR(opline->result.var), value);
26300 		}
26301 	} else {
26302 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
26303 			object_ptr = Z_REFVAL_P(object_ptr);
26304 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
26305 				goto try_assign_dim_array;
26306 			}
26307 		}
26308 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
26309 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26310 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
26311 
26312 			zend_assign_to_object_dim(object_ptr, dim, value);
26313 
26314 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26315 				ZVAL_COPY(EX_VAR(opline->result.var), value);
26316 			}
26317 
26318 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
26319 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
26320 				zend_throw_error(NULL, "[] operator not supported for strings");
26321 
26322 				if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26323 				UNDEF_RESULT();
26324 				HANDLE_EXCEPTION();
26325 			} else {
26326 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26327 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
26328 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
26329 
26330 			}
26331 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
26332 			ZVAL_NEW_ARR(object_ptr);
26333 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
26334 			goto try_assign_dim_array;
26335 		} else {
26336 			if (IS_VAR != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
26337 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
26338 			}
26339 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26340 assign_dim_error:
26341 
26342 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26343 				ZVAL_NULL(EX_VAR(opline->result.var));
26344 			}
26345 		}
26346 	}
26347 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
26348 		zval_ptr_dtor_nogc(free_op2);
26349 	}
26350 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26351 	/* assign_dim has two opcodes! */
26352 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
26353 }
26354 
26355 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26356 {
26357 	USE_OPLINE
26358 	zval *function_name;
26359 	zend_class_entry *ce;
26360 	zend_object *object;
26361 	zend_function *fbc;
26362 	zend_execute_data *call;
26363 
26364 	SAVE_OPLINE();
26365 
26366 	if (IS_VAR == IS_CONST) {
26367 		/* no function found. try a static method in class */
26368 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
26369 		if (UNEXPECTED(ce == NULL)) {
26370 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
26371 			if (UNEXPECTED(ce == NULL)) {
26372 				ZEND_ASSERT(EG(exception));
26373 				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
26374 				HANDLE_EXCEPTION();
26375 			}
26376 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
26377 		}
26378 	} else if (IS_VAR == IS_UNUSED) {
26379 		ce = zend_fetch_class(NULL, opline->op1.num);
26380 		if (UNEXPECTED(ce == NULL)) {
26381 			ZEND_ASSERT(EG(exception));
26382 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
26383 			HANDLE_EXCEPTION();
26384 		}
26385 	} else {
26386 		ce = Z_CE_P(EX_VAR(opline->op1.var));
26387 	}
26388 
26389 	if (IS_VAR == IS_CONST &&
26390 	    (IS_TMP_VAR|IS_VAR) == IS_CONST &&
26391 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
26392 		/* nothing to do */
26393 	} else if (IS_VAR != IS_CONST &&
26394 	           (IS_TMP_VAR|IS_VAR) == IS_CONST &&
26395 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
26396 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
26397 	} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
26398 		zend_free_op free_op2;
26399 
26400 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26401 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
26402 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
26403 				do {
26404 					if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
26405 						function_name = Z_REFVAL_P(function_name);
26406 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
26407 							break;
26408 						}
26409 					} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
26410 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
26411 						if (UNEXPECTED(EG(exception) != NULL)) {
26412 							HANDLE_EXCEPTION();
26413 						}
26414 					}
26415 					zend_throw_error(NULL, "Function name must be a string");
26416 					zval_ptr_dtor_nogc(free_op2);
26417 					HANDLE_EXCEPTION();
26418 				} while (0);
26419  			}
26420 		}
26421 
26422 		if (ce->get_static_method) {
26423 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
26424 		} else {
26425 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
26426 		}
26427 		if (UNEXPECTED(fbc == NULL)) {
26428 			if (EXPECTED(!EG(exception))) {
26429 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
26430 			}
26431 			zval_ptr_dtor_nogc(free_op2);
26432 			HANDLE_EXCEPTION();
26433 		}
26434 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
26435 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
26436 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
26437 			if (IS_VAR == IS_CONST) {
26438 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
26439 			} else {
26440 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
26441 			}
26442 		}
26443 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
26444 			init_func_run_time_cache(&fbc->op_array);
26445 		}
26446 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
26447 			zval_ptr_dtor_nogc(free_op2);
26448 		}
26449 	} else {
26450 		if (UNEXPECTED(ce->constructor == NULL)) {
26451 			zend_throw_error(NULL, "Cannot call constructor");
26452 			HANDLE_EXCEPTION();
26453 		}
26454 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
26455 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
26456 			HANDLE_EXCEPTION();
26457 		}
26458 		fbc = ce->constructor;
26459 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
26460 			init_func_run_time_cache(&fbc->op_array);
26461 		}
26462 	}
26463 
26464 	object = NULL;
26465 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
26466 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
26467 			object = Z_OBJ(EX(This));
26468 			ce = object->ce;
26469 		} else {
26470 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
26471 				/* Allowed for PHP 4 compatibility. */
26472 				zend_error(
26473 					E_DEPRECATED,
26474 					"Non-static method %s::%s() should not be called statically",
26475 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
26476 				if (UNEXPECTED(EG(exception) != NULL)) {
26477 					HANDLE_EXCEPTION();
26478 				}
26479 			} else {
26480 				/* An internal function assumes $this is present and won't check that.
26481 				 * So PHP would crash by allowing the call. */
26482 				zend_throw_error(
26483 					zend_ce_error,
26484 					"Non-static method %s::%s() cannot be called statically",
26485 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
26486 				HANDLE_EXCEPTION();
26487 			}
26488 		}
26489 	}
26490 
26491 	if (IS_VAR == IS_UNUSED) {
26492 		/* previous opcode is ZEND_FETCH_CLASS */
26493 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
26494 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
26495 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
26496 				ce = Z_OBJCE(EX(This));
26497 			} else {
26498 				ce = Z_CE(EX(This));
26499 			}
26500 		}
26501 	}
26502 
26503 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
26504 		fbc, opline->extended_value, ce, object);
26505 	call->prev_execute_data = EX(call);
26506 	EX(call) = call;
26507 
26508 	ZEND_VM_NEXT_OPCODE();
26509 }
26510 
26511 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26512 {
26513 	USE_OPLINE
26514 	zend_free_op free_op1;
26515 	zval *expr_ptr, new_expr;
26516 
26517 	SAVE_OPLINE();
26518 	if ((IS_VAR == IS_VAR || IS_VAR == IS_CV) &&
26519 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
26520 		expr_ptr = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26521 		ZVAL_MAKE_REF(expr_ptr);
26522 		Z_ADDREF_P(expr_ptr);
26523 		if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26524 	} else {
26525 		expr_ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26526 		if (IS_VAR == IS_TMP_VAR) {
26527 			/* pass */
26528 		} else if (IS_VAR == IS_CONST) {
26529 			if (Z_REFCOUNTED_P(expr_ptr)) {
26530 				Z_ADDREF_P(expr_ptr);
26531 			}
26532 		} else if (IS_VAR == IS_CV) {
26533 			ZVAL_DEREF(expr_ptr);
26534 			if (Z_REFCOUNTED_P(expr_ptr)) {
26535 				Z_ADDREF_P(expr_ptr);
26536 			}
26537 		} else /* if (IS_VAR == IS_VAR) */ {
26538 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
26539 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
26540 
26541 				expr_ptr = Z_REFVAL_P(expr_ptr);
26542 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
26543 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
26544 					expr_ptr = &new_expr;
26545 					efree_size(ref, sizeof(zend_reference));
26546 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
26547 					Z_ADDREF_P(expr_ptr);
26548 				}
26549 			}
26550 		}
26551 	}
26552 
26553 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
26554 		zend_free_op free_op2;
26555 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26556 		zend_string *str;
26557 		zend_ulong hval;
26558 
26559 add_again:
26560 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
26561 			str = Z_STR_P(offset);
26562 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
26563 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
26564 					goto num_index;
26565 				}
26566 			}
26567 str_index:
26568 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
26569 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
26570 			hval = Z_LVAL_P(offset);
26571 num_index:
26572 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
26573 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
26574 			offset = Z_REFVAL_P(offset);
26575 			goto add_again;
26576 		} else if (Z_TYPE_P(offset) == IS_NULL) {
26577 			str = ZSTR_EMPTY_ALLOC();
26578 			goto str_index;
26579 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
26580 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
26581 			goto num_index;
26582 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
26583 			hval = 0;
26584 			goto num_index;
26585 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
26586 			hval = 1;
26587 			goto num_index;
26588 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
26589 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
26590 			str = ZSTR_EMPTY_ALLOC();
26591 			goto str_index;
26592 		} else {
26593 			zend_error(E_WARNING, "Illegal offset type");
26594 			zval_ptr_dtor(expr_ptr);
26595 		}
26596 		zval_ptr_dtor_nogc(free_op2);
26597 	} else {
26598 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
26599 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
26600 			zval_ptr_dtor(expr_ptr);
26601 		}
26602 	}
26603 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26604 }
26605 
26606 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26607 {
26608 	zval *array;
26609 	uint32_t size;
26610 	USE_OPLINE
26611 
26612 	array = EX_VAR(opline->result.var);
26613 	if (IS_VAR != IS_UNUSED) {
26614 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
26615 	} else {
26616 		size = 0;
26617 	}
26618 	ZVAL_NEW_ARR(array);
26619 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
26620 
26621 	if (IS_VAR != IS_UNUSED) {
26622 		/* Explicitly initialize array as not-packed if flag is set */
26623 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
26624 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
26625 		}
26626 	}
26627 
26628 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26629 }
26630 
26631 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26632 {
26633 	USE_OPLINE
26634 	zend_free_op free_op1, free_op2;
26635 	zval *container;
26636 	zval *offset;
26637 	zend_ulong hval;
26638 	zend_string *key;
26639 
26640 	SAVE_OPLINE();
26641 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26642 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26643 
26644 	do {
26645 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
26646 			HashTable *ht;
26647 
26648 unset_dim_array:
26649 			SEPARATE_ARRAY(container);
26650 			ht = Z_ARRVAL_P(container);
26651 offset_again:
26652 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
26653 				key = Z_STR_P(offset);
26654 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
26655 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
26656 						goto num_index_dim;
26657 					}
26658 				}
26659 str_index_dim:
26660 				if (ht == &EG(symbol_table)) {
26661 					zend_delete_global_variable(key);
26662 				} else {
26663 					zend_hash_del(ht, key);
26664 				}
26665 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
26666 				hval = Z_LVAL_P(offset);
26667 num_index_dim:
26668 				zend_hash_index_del(ht, hval);
26669 			} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
26670 				offset = Z_REFVAL_P(offset);
26671 				goto offset_again;
26672 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
26673 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
26674 				goto num_index_dim;
26675 			} else if (Z_TYPE_P(offset) == IS_NULL) {
26676 				key = ZSTR_EMPTY_ALLOC();
26677 				goto str_index_dim;
26678 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
26679 				hval = 0;
26680 				goto num_index_dim;
26681 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
26682 				hval = 1;
26683 				goto num_index_dim;
26684 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
26685 				hval = Z_RES_HANDLE_P(offset);
26686 				goto num_index_dim;
26687 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
26688 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
26689 				key = ZSTR_EMPTY_ALLOC();
26690 				goto str_index_dim;
26691 			} else {
26692 				zend_error(E_WARNING, "Illegal offset type in unset");
26693 			}
26694 			break;
26695 		} else if (Z_ISREF_P(container)) {
26696 			container = Z_REFVAL_P(container);
26697 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
26698 				goto unset_dim_array;
26699 			}
26700 		}
26701 		if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
26702 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
26703 		}
26704 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
26705 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
26706 		}
26707 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
26708 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
26709 				zend_throw_error(NULL, "Cannot use object as array");
26710 			} else {
26711 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
26712 			}
26713 		} else if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
26714 			zend_throw_error(NULL, "Cannot unset string offsets");
26715 		}
26716 	} while (0);
26717 
26718 	zval_ptr_dtor_nogc(free_op2);
26719 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26720 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26721 }
26722 
26723 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26724 {
26725 	USE_OPLINE
26726 	zend_free_op free_op1, free_op2;
26727 	zval *container;
26728 	zval *offset;
26729 
26730 	SAVE_OPLINE();
26731 	container = _get_zval_ptr_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
26732 	if (IS_VAR == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
26733 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26734 	}
26735 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
26736 
26737 	do {
26738 		if (IS_VAR != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
26739 			if (Z_ISREF_P(container)) {
26740 				container = Z_REFVAL_P(container);
26741 				if (Z_TYPE_P(container) != IS_OBJECT) {
26742 					break;
26743 				}
26744 			} else {
26745 				break;
26746 			}
26747 		}
26748 		if (Z_OBJ_HT_P(container)->unset_property) {
26749 			Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
26750 		} else {
26751 			zend_string *property_name = zval_get_string(offset);
26752 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
26753 			zend_string_release(property_name);
26754 		}
26755 	} while (0);
26756 
26757 	zval_ptr_dtor_nogc(free_op2);
26758 	if (UNEXPECTED(free_op1)) {zval_ptr_dtor_nogc(free_op1);};
26759 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26760 }
26761 
26762 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NEW_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26763 {
26764 	USE_OPLINE
26765 	zval *result;
26766 	zend_function *constructor;
26767 	zend_class_entry *ce;
26768 	zend_execute_data *call;
26769 
26770 	SAVE_OPLINE();
26771 	if (IS_UNUSED == IS_CONST) {
26772 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
26773 		if (UNEXPECTED(ce == NULL)) {
26774 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
26775 			if (UNEXPECTED(ce == NULL)) {
26776 				ZEND_ASSERT(EG(exception));
26777 				ZVAL_UNDEF(EX_VAR(opline->result.var));
26778 				HANDLE_EXCEPTION();
26779 			}
26780 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
26781 		}
26782 	} else if (IS_UNUSED == IS_UNUSED) {
26783 		ce = zend_fetch_class(NULL, opline->op1.num);
26784 		if (UNEXPECTED(ce == NULL)) {
26785 			ZEND_ASSERT(EG(exception));
26786 			ZVAL_UNDEF(EX_VAR(opline->result.var));
26787 			HANDLE_EXCEPTION();
26788 		}
26789 	} else {
26790 		ce = Z_CE_P(EX_VAR(opline->op1.var));
26791 	}
26792 
26793 	result = EX_VAR(opline->result.var);
26794 	if (UNEXPECTED(object_init_ex(result, ce) != SUCCESS)) {
26795 		ZVAL_UNDEF(result);
26796 		HANDLE_EXCEPTION();
26797 	}
26798 
26799 	constructor = Z_OBJ_HT_P(result)->get_constructor(Z_OBJ_P(result));
26800 	if (constructor == NULL) {
26801 		if (UNEXPECTED(EG(exception))) {
26802 			HANDLE_EXCEPTION();
26803 		}
26804 
26805 		/* If there are no arguments, skip over the DO_FCALL opcode. We check if the next
26806 		 * opcode is DO_FCALL in case EXT instructions are used. */
26807 		if (EXPECTED(opline->extended_value == 0 && (opline+1)->opcode == ZEND_DO_FCALL)) {
26808 			ZEND_VM_NEXT_OPCODE_EX(1, 2);
26809 		}
26810 
26811 		/* Perform a dummy function call */
26812 		call = zend_vm_stack_push_call_frame(
26813 			ZEND_CALL_FUNCTION, (zend_function *) &zend_pass_function,
26814 			opline->extended_value, NULL, NULL);
26815 	} else {
26816 		if (EXPECTED(constructor->type == ZEND_USER_FUNCTION) && UNEXPECTED(!constructor->op_array.run_time_cache)) {
26817 			init_func_run_time_cache(&constructor->op_array);
26818 		}
26819 		/* We are not handling overloaded classes right now */
26820 		call = zend_vm_stack_push_call_frame(
26821 			ZEND_CALL_FUNCTION | ZEND_CALL_RELEASE_THIS | ZEND_CALL_CTOR,
26822 			constructor,
26823 			opline->extended_value,
26824 			ce,
26825 			Z_OBJ_P(result));
26826 		Z_ADDREF_P(result);
26827 	}
26828 
26829 	call->prev_execute_data = EX(call);
26830 	EX(call) = call;
26831 	ZEND_VM_NEXT_OPCODE();
26832 }
26833 
26834 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26835 {
26836 	USE_OPLINE
26837 
26838 	zval *obj;
26839 	zend_class_entry *ce, *scope;
26840 	zend_function *clone;
26841 	zend_object_clone_obj_t clone_call;
26842 
26843 	SAVE_OPLINE();
26844 	obj = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
26845 
26846 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
26847 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26848 	}
26849 
26850 	do {
26851 		if (IS_UNUSED == IS_CONST ||
26852 		    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
26853 		    if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
26854 		    	obj = Z_REFVAL_P(obj);
26855 		    	if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
26856 		    		break;
26857 				}
26858 			}
26859 			ZVAL_UNDEF(EX_VAR(opline->result.var));
26860 			if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
26861 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
26862 				if (UNEXPECTED(EG(exception) != NULL)) {
26863 					HANDLE_EXCEPTION();
26864 				}
26865 			}
26866 			zend_throw_error(NULL, "__clone method called on non-object");
26867 
26868 			HANDLE_EXCEPTION();
26869 		}
26870 	} while (0);
26871 
26872 	ce = Z_OBJCE_P(obj);
26873 	clone = ce->clone;
26874 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
26875 	if (UNEXPECTED(clone_call == NULL)) {
26876 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
26877 
26878 		ZVAL_UNDEF(EX_VAR(opline->result.var));
26879 		HANDLE_EXCEPTION();
26880 	}
26881 
26882 	if (clone) {
26883 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
26884 			/* Ensure that if we're calling a private function, we're allowed to do so.
26885 			 */
26886 			scope = EX(func)->op_array.scope;
26887 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
26888 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
26889 
26890 				ZVAL_UNDEF(EX_VAR(opline->result.var));
26891 				HANDLE_EXCEPTION();
26892 			}
26893 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
26894 			/* Ensure that if we're calling a protected function, we're allowed to do so.
26895 			 */
26896 			scope = EX(func)->op_array.scope;
26897 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
26898 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
26899 
26900 				ZVAL_UNDEF(EX_VAR(opline->result.var));
26901 				HANDLE_EXCEPTION();
26902 			}
26903 		}
26904 	}
26905 
26906 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
26907 
26908 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
26909 }
26910 
26911 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
26912 {
26913 	USE_OPLINE
26914 
26915 	SAVE_OPLINE();
26916 	if (IS_UNUSED != IS_UNUSED) {
26917 
26918 		zval *ptr = NULL;
26919 
26920 		do {
26921 			if (Z_TYPE_P(ptr) == IS_LONG) {
26922 				EG(exit_status) = Z_LVAL_P(ptr);
26923 			} else {
26924 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
26925 					ptr = Z_REFVAL_P(ptr);
26926 					if (Z_TYPE_P(ptr) == IS_LONG) {
26927 						EG(exit_status) = Z_LVAL_P(ptr);
26928 						break;
26929 					}
26930 				}
26931 				zend_print_variable(ptr);
26932 			}
26933 		} while (0);
26934 
26935 	}
26936 	zend_bailout();
26937 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
26938 }
26939 
26940 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
26941 {
26942 	USE_OPLINE
26943 	zend_free_op free_op_data1;
26944 	zval *object;
26945 	zval *property;
26946 	zval *value;
26947 	zval *zptr;
26948 
26949 	SAVE_OPLINE();
26950 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
26951 
26952 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
26953 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
26954 	}
26955 
26956 	property = EX_CONSTANT(opline->op2);
26957 
26958 	do {
26959 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
26960 
26961 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
26962 			ZVAL_DEREF(object);
26963 			if (UNEXPECTED(!make_real_object(object))) {
26964 				zend_string *property_name = zval_get_string(property);
26965 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
26966 				zend_string_release(property_name);
26967 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26968 					ZVAL_NULL(EX_VAR(opline->result.var));
26969 				}
26970 				break;
26971 			}
26972 		}
26973 
26974 		/* here we are sure we are dealing with an object */
26975 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
26976 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
26977 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
26978 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26979 					ZVAL_NULL(EX_VAR(opline->result.var));
26980 				}
26981 			} else {
26982 				ZVAL_DEREF(zptr);
26983 				SEPARATE_ZVAL_NOREF(zptr);
26984 
26985 				binary_op(zptr, zptr, value);
26986 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
26987 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
26988 				}
26989 			}
26990 		} else {
26991 			zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
26992 		}
26993 	} while (0);
26994 
26995 	FREE_OP(free_op_data1);
26996 
26997 
26998 	/* assign_obj has two opcodes! */
26999 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27000 }
27001 
27002 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
27003 {
27004 #if 1 && IS_CONST == IS_UNUSED
27005 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27006 #else
27007 # if 0 || IS_UNUSED != IS_UNUSED
27008 	USE_OPLINE
27009 
27010 	if (EXPECTED(0)) {
27011 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27012 	}
27013 	if (EXPECTED(0)) {
27014 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27015 	}
27016 # endif
27017 
27018 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27019 #endif
27020 }
27021 
27022 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27023 {
27024 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27025 }
27026 
27027 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27028 {
27029 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27030 }
27031 
27032 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27033 {
27034 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27035 }
27036 
27037 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27038 {
27039 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27040 }
27041 
27042 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27043 {
27044 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27045 }
27046 
27047 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27048 {
27049 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27050 }
27051 
27052 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27053 {
27054 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27055 }
27056 
27057 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27058 {
27059 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27060 }
27061 
27062 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27063 {
27064 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27065 }
27066 
27067 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27068 {
27069 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27070 }
27071 
27072 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27073 {
27074 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27075 }
27076 
27077 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27078 {
27079 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27080 }
27081 
27082 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
27083 {
27084 	USE_OPLINE
27085 
27086 	zval *object;
27087 	zval *property;
27088 	zval *zptr;
27089 
27090 	SAVE_OPLINE();
27091 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27092 
27093 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
27094 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27095 	}
27096 
27097 	property = EX_CONSTANT(opline->op2);
27098 
27099 	do {
27100 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
27101 			ZVAL_DEREF(object);
27102 			if (UNEXPECTED(!make_real_object(object))) {
27103 				zend_string *property_name = zval_get_string(property);
27104 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
27105 				zend_string_release(property_name);
27106 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27107 					ZVAL_NULL(EX_VAR(opline->result.var));
27108 				}
27109 				break;
27110 			}
27111 		}
27112 
27113 		/* here we are sure we are dealing with an object */
27114 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
27115 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
27116 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
27117 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27118 					ZVAL_NULL(EX_VAR(opline->result.var));
27119 				}
27120 			} else {
27121 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
27122 					if (inc) {
27123 						fast_long_increment_function(zptr);
27124 					} else {
27125 						fast_long_decrement_function(zptr);
27126 					}
27127 				} else {
27128 					ZVAL_DEREF(zptr);
27129 					SEPARATE_ZVAL_NOREF(zptr);
27130 
27131 					if (inc) {
27132 						increment_function(zptr);
27133 					} else {
27134 						decrement_function(zptr);
27135 					}
27136 				}
27137 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27138 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
27139 				}
27140 			}
27141 		} else {
27142 			zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
27143 		}
27144 	} while (0);
27145 
27146 
27147 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27148 }
27149 
27150 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27151 {
27152 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27153 }
27154 
27155 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27156 {
27157 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27158 }
27159 
27160 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
27161 {
27162 	USE_OPLINE
27163 
27164 	zval *object;
27165 	zval *property;
27166 	zval *zptr;
27167 
27168 	SAVE_OPLINE();
27169 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27170 
27171 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
27172 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27173 	}
27174 
27175 	property = EX_CONSTANT(opline->op2);
27176 
27177 	do {
27178 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
27179 			ZVAL_DEREF(object);
27180 			if (UNEXPECTED(!make_real_object(object))) {
27181 				zend_string *property_name = zval_get_string(property);
27182 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
27183 				zend_string_release(property_name);
27184 				ZVAL_NULL(EX_VAR(opline->result.var));
27185 				break;
27186 			}
27187 		}
27188 
27189 		/* here we are sure we are dealing with an object */
27190 
27191 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
27192 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
27193 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
27194 				ZVAL_NULL(EX_VAR(opline->result.var));
27195 			} else {
27196 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
27197 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
27198 					if (inc) {
27199 						fast_long_increment_function(zptr);
27200 					} else {
27201 						fast_long_decrement_function(zptr);
27202 					}
27203 				} else {
27204 					ZVAL_DEREF(zptr);
27205 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
27206 					zval_opt_copy_ctor(zptr);
27207 					if (inc) {
27208 						increment_function(zptr);
27209 					} else {
27210 						decrement_function(zptr);
27211 					}
27212 				}
27213 			}
27214 		} else {
27215 			zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
27216 		}
27217 	} while (0);
27218 
27219 
27220 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27221 }
27222 
27223 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27224 {
27225 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27226 }
27227 
27228 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27229 {
27230 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
27231 }
27232 
27233 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27234 {
27235 	USE_OPLINE
27236 
27237 	zval *container;
27238 
27239 	zval *offset;
27240 
27241 	SAVE_OPLINE();
27242 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27243 
27244 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
27245 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27246 	}
27247 
27248 	offset = EX_CONSTANT(opline->op2);
27249 
27250 	if (IS_UNUSED == IS_CONST ||
27251 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
27252 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
27253 			container = Z_REFVAL_P(container);
27254 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
27255 				goto fetch_obj_r_no_object;
27256 			}
27257 		} else {
27258 			goto fetch_obj_r_no_object;
27259 		}
27260 	}
27261 
27262 	/* here we are sure we are dealing with an object */
27263 	do {
27264 		zend_object *zobj = Z_OBJ_P(container);
27265 		zval *retval;
27266 
27267 		if (IS_CONST == IS_CONST &&
27268 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
27269 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
27270 
27271 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
27272 				retval = OBJ_PROP(zobj, prop_offset);
27273 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
27274 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
27275 					break;
27276 				}
27277 			} else if (EXPECTED(zobj->properties != NULL)) {
27278 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
27279 				if (EXPECTED(retval)) {
27280 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
27281 					break;
27282 				}
27283 			}
27284 		}
27285 
27286 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
27287 			zend_string *property_name;
27288 fetch_obj_r_no_object:
27289 			property_name = zval_get_string(offset);
27290 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
27291 			zend_string_release(property_name);
27292 			ZVAL_NULL(EX_VAR(opline->result.var));
27293 		} else {
27294 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
27295 
27296 			if (retval != EX_VAR(opline->result.var)) {
27297 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
27298 			}
27299 		}
27300 	} while (0);
27301 
27302 
27303 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27304 }
27305 
27306 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27307 {
27308 	USE_OPLINE
27309 	zend_free_op free_op1;
27310 	zval *property;
27311 	zval *container;
27312 
27313 	SAVE_OPLINE();
27314 
27315 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27316 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
27317 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27318 	}
27319 
27320 	property = EX_CONSTANT(opline->op2);
27321 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
27322 
27323 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
27324 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
27325 	}
27326 
27327 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27328 }
27329 
27330 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27331 {
27332 	USE_OPLINE
27333 	zend_free_op free_op1;
27334 	zval *property;
27335 	zval *container;
27336 
27337 	SAVE_OPLINE();
27338 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27339 
27340 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
27341 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27342 	}
27343 	property = EX_CONSTANT(opline->op2);
27344 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
27345 
27346 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
27347 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
27348 	}
27349 
27350 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27351 }
27352 
27353 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27354 {
27355 	USE_OPLINE
27356 
27357 	zval *container;
27358 
27359 	zval *offset;
27360 
27361 	SAVE_OPLINE();
27362 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27363 
27364 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
27365 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27366 	}
27367 
27368 	offset  = EX_CONSTANT(opline->op2);
27369 
27370 	if (IS_UNUSED == IS_CONST ||
27371 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
27372 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
27373 			container = Z_REFVAL_P(container);
27374 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
27375 				goto fetch_obj_is_no_object;
27376 			}
27377 		} else {
27378 			goto fetch_obj_is_no_object;
27379 		}
27380 	}
27381 
27382 	/* here we are sure we are dealing with an object */
27383 	do {
27384 		zend_object *zobj = Z_OBJ_P(container);
27385 		zval *retval;
27386 
27387 		if (IS_CONST == IS_CONST &&
27388 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
27389 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
27390 
27391 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
27392 				retval = OBJ_PROP(zobj, prop_offset);
27393 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
27394 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
27395 					break;
27396 				}
27397 			} else if (EXPECTED(zobj->properties != NULL)) {
27398 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
27399 				if (EXPECTED(retval)) {
27400 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
27401 					break;
27402 				}
27403 			}
27404 		}
27405 
27406 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
27407 fetch_obj_is_no_object:
27408 			ZVAL_NULL(EX_VAR(opline->result.var));
27409 		} else {
27410 
27411 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
27412 
27413 			if (retval != EX_VAR(opline->result.var)) {
27414 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
27415 			}
27416 		}
27417 	} while (0);
27418 
27419 
27420 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27421 }
27422 
27423 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27424 {
27425 	USE_OPLINE
27426 	zval *container;
27427 
27428 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
27429 		/* Behave like FETCH_OBJ_W */
27430 		zend_free_op free_op1;
27431 		zval *property;
27432 
27433 		SAVE_OPLINE();
27434 		container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27435 
27436 		if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
27437 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27438 		}
27439 		if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
27440 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
27441 
27442 
27443 			ZVAL_UNDEF(EX_VAR(opline->result.var));
27444 			HANDLE_EXCEPTION();
27445 		}
27446 		property = EX_CONSTANT(opline->op2);
27447 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
27448 
27449 		if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
27450 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
27451 		}
27452 
27453 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27454 	} else {
27455 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27456 	}
27457 }
27458 
27459 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27460 {
27461 	USE_OPLINE
27462 	zend_free_op free_op1;
27463 	zval *container, *property;
27464 
27465 	SAVE_OPLINE();
27466 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27467 
27468 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
27469 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27470 	}
27471 
27472 	property = EX_CONSTANT(opline->op2);
27473 
27474 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
27475 
27476 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
27477 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
27478 	}
27479 
27480 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
27481 }
27482 
27483 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27484 {
27485 	USE_OPLINE
27486 
27487 	zval *object, *property, *value, tmp;
27488 
27489 	SAVE_OPLINE();
27490 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27491 
27492 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
27493 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27494 	}
27495 
27496 	property = EX_CONSTANT(opline->op2);
27497 	value = EX_CONSTANT((opline+1)->op1);
27498 
27499 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
27500 		do {
27501 			if (Z_ISREF_P(object)) {
27502 				object = Z_REFVAL_P(object);
27503 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
27504 					break;
27505 				}
27506 			}
27507 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
27508 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
27509 				zend_object *obj;
27510 
27511 				zval_ptr_dtor(object);
27512 				object_init(object);
27513 				Z_ADDREF_P(object);
27514 				obj = Z_OBJ_P(object);
27515 				zend_error(E_WARNING, "Creating default object from empty value");
27516 				if (GC_REFCOUNT(obj) == 1) {
27517 					/* the enclosing container was deleted, obj is unreferenced */
27518 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27519 						ZVAL_NULL(EX_VAR(opline->result.var));
27520 					}
27521 
27522 					OBJ_RELEASE(obj);
27523 					goto exit_assign_obj;
27524 				}
27525 				Z_DELREF_P(object);
27526 			} else {
27527 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
27528 					zend_string *property_name = zval_get_string(property);
27529 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
27530 					zend_string_release(property_name);
27531 				}
27532 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27533 					ZVAL_NULL(EX_VAR(opline->result.var));
27534 				}
27535 
27536 				goto exit_assign_obj;
27537 			}
27538 		} while (0);
27539 	}
27540 
27541 	if (IS_CONST == IS_CONST &&
27542 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
27543 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
27544 		zend_object *zobj = Z_OBJ_P(object);
27545 		zval *property_val;
27546 
27547 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
27548 			property_val = OBJ_PROP(zobj, prop_offset);
27549 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
27550 fast_assign_obj:
27551 				value = zend_assign_to_variable(property_val, value, IS_CONST);
27552 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27553 					ZVAL_COPY(EX_VAR(opline->result.var), value);
27554 				}
27555 				goto exit_assign_obj;
27556 			}
27557 		} else {
27558 			if (EXPECTED(zobj->properties != NULL)) {
27559 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
27560 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
27561 						GC_REFCOUNT(zobj->properties)--;
27562 					}
27563 					zobj->properties = zend_array_dup(zobj->properties);
27564 				}
27565 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
27566 				if (property_val) {
27567 					goto fast_assign_obj;
27568 				}
27569 			}
27570 
27571 			if (!zobj->ce->__set) {
27572 
27573 				if (EXPECTED(zobj->properties == NULL)) {
27574 					rebuild_object_properties(zobj);
27575 				}
27576 				if (IS_CONST == IS_CONST) {
27577 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
27578 						Z_ADDREF_P(value);
27579 					}
27580 				} else if (IS_CONST != IS_TMP_VAR) {
27581 					if (Z_ISREF_P(value)) {
27582 						if (IS_CONST == IS_VAR) {
27583 							zend_reference *ref = Z_REF_P(value);
27584 							if (--GC_REFCOUNT(ref) == 0) {
27585 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
27586 								efree_size(ref, sizeof(zend_reference));
27587 								value = &tmp;
27588 							} else {
27589 								value = Z_REFVAL_P(value);
27590 								if (Z_REFCOUNTED_P(value)) {
27591 									Z_ADDREF_P(value);
27592 								}
27593 							}
27594 						} else {
27595 							value = Z_REFVAL_P(value);
27596 							if (Z_REFCOUNTED_P(value)) {
27597 								Z_ADDREF_P(value);
27598 							}
27599 						}
27600 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
27601 						Z_ADDREF_P(value);
27602 					}
27603 				}
27604 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
27605 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27606 					ZVAL_COPY(EX_VAR(opline->result.var), value);
27607 				}
27608 				goto exit_assign_obj;
27609 			}
27610 		}
27611 	}
27612 
27613 	if (!Z_OBJ_HT_P(object)->write_property) {
27614 		zend_string *property_name = zval_get_string(property);
27615 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
27616 		zend_string_release(property_name);
27617 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27618 			ZVAL_NULL(EX_VAR(opline->result.var));
27619 		}
27620 
27621 		goto exit_assign_obj;
27622 	}
27623 
27624 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
27625 		ZVAL_DEREF(value);
27626 	}
27627 
27628 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
27629 
27630 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27631 		ZVAL_COPY(EX_VAR(opline->result.var), value);
27632 	}
27633 
27634 exit_assign_obj:
27635 
27636 
27637 	/* assign_obj has two opcodes! */
27638 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27639 }
27640 
27641 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27642 {
27643 	USE_OPLINE
27644 	zend_free_op free_op_data;
27645 	zval *object, *property, *value, tmp;
27646 
27647 	SAVE_OPLINE();
27648 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27649 
27650 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
27651 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27652 	}
27653 
27654 	property = EX_CONSTANT(opline->op2);
27655 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27656 
27657 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
27658 		do {
27659 			if (Z_ISREF_P(object)) {
27660 				object = Z_REFVAL_P(object);
27661 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
27662 					break;
27663 				}
27664 			}
27665 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
27666 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
27667 				zend_object *obj;
27668 
27669 				zval_ptr_dtor(object);
27670 				object_init(object);
27671 				Z_ADDREF_P(object);
27672 				obj = Z_OBJ_P(object);
27673 				zend_error(E_WARNING, "Creating default object from empty value");
27674 				if (GC_REFCOUNT(obj) == 1) {
27675 					/* the enclosing container was deleted, obj is unreferenced */
27676 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27677 						ZVAL_NULL(EX_VAR(opline->result.var));
27678 					}
27679 					zval_ptr_dtor_nogc(free_op_data);
27680 					OBJ_RELEASE(obj);
27681 					goto exit_assign_obj;
27682 				}
27683 				Z_DELREF_P(object);
27684 			} else {
27685 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
27686 					zend_string *property_name = zval_get_string(property);
27687 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
27688 					zend_string_release(property_name);
27689 				}
27690 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27691 					ZVAL_NULL(EX_VAR(opline->result.var));
27692 				}
27693 				zval_ptr_dtor_nogc(free_op_data);
27694 				goto exit_assign_obj;
27695 			}
27696 		} while (0);
27697 	}
27698 
27699 	if (IS_CONST == IS_CONST &&
27700 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
27701 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
27702 		zend_object *zobj = Z_OBJ_P(object);
27703 		zval *property_val;
27704 
27705 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
27706 			property_val = OBJ_PROP(zobj, prop_offset);
27707 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
27708 fast_assign_obj:
27709 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
27710 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27711 					ZVAL_COPY(EX_VAR(opline->result.var), value);
27712 				}
27713 				goto exit_assign_obj;
27714 			}
27715 		} else {
27716 			if (EXPECTED(zobj->properties != NULL)) {
27717 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
27718 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
27719 						GC_REFCOUNT(zobj->properties)--;
27720 					}
27721 					zobj->properties = zend_array_dup(zobj->properties);
27722 				}
27723 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
27724 				if (property_val) {
27725 					goto fast_assign_obj;
27726 				}
27727 			}
27728 
27729 			if (!zobj->ce->__set) {
27730 
27731 				if (EXPECTED(zobj->properties == NULL)) {
27732 					rebuild_object_properties(zobj);
27733 				}
27734 				if (IS_TMP_VAR == IS_CONST) {
27735 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
27736 						Z_ADDREF_P(value);
27737 					}
27738 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
27739 					if (Z_ISREF_P(value)) {
27740 						if (IS_TMP_VAR == IS_VAR) {
27741 							zend_reference *ref = Z_REF_P(value);
27742 							if (--GC_REFCOUNT(ref) == 0) {
27743 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
27744 								efree_size(ref, sizeof(zend_reference));
27745 								value = &tmp;
27746 							} else {
27747 								value = Z_REFVAL_P(value);
27748 								if (Z_REFCOUNTED_P(value)) {
27749 									Z_ADDREF_P(value);
27750 								}
27751 							}
27752 						} else {
27753 							value = Z_REFVAL_P(value);
27754 							if (Z_REFCOUNTED_P(value)) {
27755 								Z_ADDREF_P(value);
27756 							}
27757 						}
27758 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
27759 						Z_ADDREF_P(value);
27760 					}
27761 				}
27762 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
27763 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27764 					ZVAL_COPY(EX_VAR(opline->result.var), value);
27765 				}
27766 				goto exit_assign_obj;
27767 			}
27768 		}
27769 	}
27770 
27771 	if (!Z_OBJ_HT_P(object)->write_property) {
27772 		zend_string *property_name = zval_get_string(property);
27773 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
27774 		zend_string_release(property_name);
27775 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27776 			ZVAL_NULL(EX_VAR(opline->result.var));
27777 		}
27778 		zval_ptr_dtor_nogc(free_op_data);
27779 		goto exit_assign_obj;
27780 	}
27781 
27782 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
27783 		ZVAL_DEREF(value);
27784 	}
27785 
27786 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
27787 
27788 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27789 		ZVAL_COPY(EX_VAR(opline->result.var), value);
27790 	}
27791 	zval_ptr_dtor_nogc(free_op_data);
27792 exit_assign_obj:
27793 
27794 
27795 	/* assign_obj has two opcodes! */
27796 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27797 }
27798 
27799 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27800 {
27801 	USE_OPLINE
27802 	zend_free_op free_op_data;
27803 	zval *object, *property, *value, tmp;
27804 
27805 	SAVE_OPLINE();
27806 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27807 
27808 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
27809 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27810 	}
27811 
27812 	property = EX_CONSTANT(opline->op2);
27813 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
27814 
27815 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
27816 		do {
27817 			if (Z_ISREF_P(object)) {
27818 				object = Z_REFVAL_P(object);
27819 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
27820 					break;
27821 				}
27822 			}
27823 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
27824 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
27825 				zend_object *obj;
27826 
27827 				zval_ptr_dtor(object);
27828 				object_init(object);
27829 				Z_ADDREF_P(object);
27830 				obj = Z_OBJ_P(object);
27831 				zend_error(E_WARNING, "Creating default object from empty value");
27832 				if (GC_REFCOUNT(obj) == 1) {
27833 					/* the enclosing container was deleted, obj is unreferenced */
27834 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27835 						ZVAL_NULL(EX_VAR(opline->result.var));
27836 					}
27837 					zval_ptr_dtor_nogc(free_op_data);
27838 					OBJ_RELEASE(obj);
27839 					goto exit_assign_obj;
27840 				}
27841 				Z_DELREF_P(object);
27842 			} else {
27843 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
27844 					zend_string *property_name = zval_get_string(property);
27845 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
27846 					zend_string_release(property_name);
27847 				}
27848 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27849 					ZVAL_NULL(EX_VAR(opline->result.var));
27850 				}
27851 				zval_ptr_dtor_nogc(free_op_data);
27852 				goto exit_assign_obj;
27853 			}
27854 		} while (0);
27855 	}
27856 
27857 	if (IS_CONST == IS_CONST &&
27858 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
27859 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
27860 		zend_object *zobj = Z_OBJ_P(object);
27861 		zval *property_val;
27862 
27863 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
27864 			property_val = OBJ_PROP(zobj, prop_offset);
27865 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
27866 fast_assign_obj:
27867 				value = zend_assign_to_variable(property_val, value, IS_VAR);
27868 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27869 					ZVAL_COPY(EX_VAR(opline->result.var), value);
27870 				}
27871 				goto exit_assign_obj;
27872 			}
27873 		} else {
27874 			if (EXPECTED(zobj->properties != NULL)) {
27875 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
27876 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
27877 						GC_REFCOUNT(zobj->properties)--;
27878 					}
27879 					zobj->properties = zend_array_dup(zobj->properties);
27880 				}
27881 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
27882 				if (property_val) {
27883 					goto fast_assign_obj;
27884 				}
27885 			}
27886 
27887 			if (!zobj->ce->__set) {
27888 
27889 				if (EXPECTED(zobj->properties == NULL)) {
27890 					rebuild_object_properties(zobj);
27891 				}
27892 				if (IS_VAR == IS_CONST) {
27893 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
27894 						Z_ADDREF_P(value);
27895 					}
27896 				} else if (IS_VAR != IS_TMP_VAR) {
27897 					if (Z_ISREF_P(value)) {
27898 						if (IS_VAR == IS_VAR) {
27899 							zend_reference *ref = Z_REF_P(value);
27900 							if (--GC_REFCOUNT(ref) == 0) {
27901 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
27902 								efree_size(ref, sizeof(zend_reference));
27903 								value = &tmp;
27904 							} else {
27905 								value = Z_REFVAL_P(value);
27906 								if (Z_REFCOUNTED_P(value)) {
27907 									Z_ADDREF_P(value);
27908 								}
27909 							}
27910 						} else {
27911 							value = Z_REFVAL_P(value);
27912 							if (Z_REFCOUNTED_P(value)) {
27913 								Z_ADDREF_P(value);
27914 							}
27915 						}
27916 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
27917 						Z_ADDREF_P(value);
27918 					}
27919 				}
27920 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
27921 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27922 					ZVAL_COPY(EX_VAR(opline->result.var), value);
27923 				}
27924 				goto exit_assign_obj;
27925 			}
27926 		}
27927 	}
27928 
27929 	if (!Z_OBJ_HT_P(object)->write_property) {
27930 		zend_string *property_name = zval_get_string(property);
27931 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
27932 		zend_string_release(property_name);
27933 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27934 			ZVAL_NULL(EX_VAR(opline->result.var));
27935 		}
27936 		zval_ptr_dtor_nogc(free_op_data);
27937 		goto exit_assign_obj;
27938 	}
27939 
27940 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
27941 		ZVAL_DEREF(value);
27942 	}
27943 
27944 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
27945 
27946 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27947 		ZVAL_COPY(EX_VAR(opline->result.var), value);
27948 	}
27949 	zval_ptr_dtor_nogc(free_op_data);
27950 exit_assign_obj:
27951 
27952 
27953 	/* assign_obj has two opcodes! */
27954 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
27955 }
27956 
27957 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
27958 {
27959 	USE_OPLINE
27960 
27961 	zval *object, *property, *value, tmp;
27962 
27963 	SAVE_OPLINE();
27964 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
27965 
27966 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
27967 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
27968 	}
27969 
27970 	property = EX_CONSTANT(opline->op2);
27971 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
27972 
27973 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
27974 		do {
27975 			if (Z_ISREF_P(object)) {
27976 				object = Z_REFVAL_P(object);
27977 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
27978 					break;
27979 				}
27980 			}
27981 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
27982 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
27983 				zend_object *obj;
27984 
27985 				zval_ptr_dtor(object);
27986 				object_init(object);
27987 				Z_ADDREF_P(object);
27988 				obj = Z_OBJ_P(object);
27989 				zend_error(E_WARNING, "Creating default object from empty value");
27990 				if (GC_REFCOUNT(obj) == 1) {
27991 					/* the enclosing container was deleted, obj is unreferenced */
27992 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
27993 						ZVAL_NULL(EX_VAR(opline->result.var));
27994 					}
27995 
27996 					OBJ_RELEASE(obj);
27997 					goto exit_assign_obj;
27998 				}
27999 				Z_DELREF_P(object);
28000 			} else {
28001 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
28002 					zend_string *property_name = zval_get_string(property);
28003 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
28004 					zend_string_release(property_name);
28005 				}
28006 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28007 					ZVAL_NULL(EX_VAR(opline->result.var));
28008 				}
28009 
28010 				goto exit_assign_obj;
28011 			}
28012 		} while (0);
28013 	}
28014 
28015 	if (IS_CONST == IS_CONST &&
28016 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
28017 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
28018 		zend_object *zobj = Z_OBJ_P(object);
28019 		zval *property_val;
28020 
28021 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
28022 			property_val = OBJ_PROP(zobj, prop_offset);
28023 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
28024 fast_assign_obj:
28025 				value = zend_assign_to_variable(property_val, value, IS_CV);
28026 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28027 					ZVAL_COPY(EX_VAR(opline->result.var), value);
28028 				}
28029 				goto exit_assign_obj;
28030 			}
28031 		} else {
28032 			if (EXPECTED(zobj->properties != NULL)) {
28033 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
28034 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
28035 						GC_REFCOUNT(zobj->properties)--;
28036 					}
28037 					zobj->properties = zend_array_dup(zobj->properties);
28038 				}
28039 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
28040 				if (property_val) {
28041 					goto fast_assign_obj;
28042 				}
28043 			}
28044 
28045 			if (!zobj->ce->__set) {
28046 
28047 				if (EXPECTED(zobj->properties == NULL)) {
28048 					rebuild_object_properties(zobj);
28049 				}
28050 				if (IS_CV == IS_CONST) {
28051 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
28052 						Z_ADDREF_P(value);
28053 					}
28054 				} else if (IS_CV != IS_TMP_VAR) {
28055 					if (Z_ISREF_P(value)) {
28056 						if (IS_CV == IS_VAR) {
28057 							zend_reference *ref = Z_REF_P(value);
28058 							if (--GC_REFCOUNT(ref) == 0) {
28059 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
28060 								efree_size(ref, sizeof(zend_reference));
28061 								value = &tmp;
28062 							} else {
28063 								value = Z_REFVAL_P(value);
28064 								if (Z_REFCOUNTED_P(value)) {
28065 									Z_ADDREF_P(value);
28066 								}
28067 							}
28068 						} else {
28069 							value = Z_REFVAL_P(value);
28070 							if (Z_REFCOUNTED_P(value)) {
28071 								Z_ADDREF_P(value);
28072 							}
28073 						}
28074 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
28075 						Z_ADDREF_P(value);
28076 					}
28077 				}
28078 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
28079 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28080 					ZVAL_COPY(EX_VAR(opline->result.var), value);
28081 				}
28082 				goto exit_assign_obj;
28083 			}
28084 		}
28085 	}
28086 
28087 	if (!Z_OBJ_HT_P(object)->write_property) {
28088 		zend_string *property_name = zval_get_string(property);
28089 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
28090 		zend_string_release(property_name);
28091 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28092 			ZVAL_NULL(EX_VAR(opline->result.var));
28093 		}
28094 
28095 		goto exit_assign_obj;
28096 	}
28097 
28098 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
28099 		ZVAL_DEREF(value);
28100 	}
28101 
28102 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
28103 
28104 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
28105 		ZVAL_COPY(EX_VAR(opline->result.var), value);
28106 	}
28107 
28108 exit_assign_obj:
28109 
28110 
28111 	/* assign_obj has two opcodes! */
28112 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
28113 }
28114 
28115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28116 {
28117 	USE_OPLINE
28118 
28119 	zend_string **rope;
28120 	zval *var;
28121 
28122 	/* Compiler allocates the necessary number of zval slots to keep the rope */
28123 	rope = (zend_string**)EX_VAR(opline->result.var);
28124 	if (IS_CONST == IS_CONST) {
28125 		var = EX_CONSTANT(opline->op2);
28126 		rope[0] = zend_string_copy(Z_STR_P(var));
28127 	} else {
28128 		var = EX_CONSTANT(opline->op2);
28129 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
28130 			if (IS_CONST == IS_CV) {
28131 				rope[0] = zend_string_copy(Z_STR_P(var));
28132 			} else {
28133 				rope[0] = Z_STR_P(var);
28134 			}
28135 		} else {
28136 			SAVE_OPLINE();
28137 			if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
28138 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
28139 			}
28140 			rope[0] = _zval_get_string_func(var);
28141 
28142 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28143 		}
28144 	}
28145 	ZEND_VM_NEXT_OPCODE();
28146 }
28147 
28148 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28149 {
28150 	USE_OPLINE
28151 	zval *function_name;
28152 
28153 	zval *object;
28154 	zend_function *fbc;
28155 	zend_class_entry *called_scope;
28156 	zend_object *obj;
28157 	zend_execute_data *call;
28158 	uint32_t call_info;
28159 
28160 	SAVE_OPLINE();
28161 
28162 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
28163 
28164 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
28165 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28166 	}
28167 
28168 	function_name = EX_CONSTANT(opline->op2);
28169 
28170 	if (IS_CONST != IS_CONST &&
28171 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
28172 		do {
28173 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
28174 				function_name = Z_REFVAL_P(function_name);
28175 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
28176 					break;
28177 				}
28178 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
28179 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
28180 				if (UNEXPECTED(EG(exception) != NULL)) {
28181 
28182 					HANDLE_EXCEPTION();
28183 				}
28184 			}
28185 			zend_throw_error(NULL, "Method name must be a string");
28186 
28187 
28188 			HANDLE_EXCEPTION();
28189 		} while (0);
28190 	}
28191 
28192 	if (IS_UNUSED != IS_UNUSED) {
28193 		do {
28194 			if (IS_UNUSED == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
28195 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
28196 					object = Z_REFVAL_P(object);
28197 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
28198 						break;
28199 					}
28200 				}
28201 				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
28202 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
28203 					if (UNEXPECTED(EG(exception) != NULL)) {
28204 
28205 						HANDLE_EXCEPTION();
28206 					}
28207 				}
28208 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
28209 
28210 
28211 				HANDLE_EXCEPTION();
28212 			}
28213 		} while (0);
28214 	}
28215 
28216 	obj = Z_OBJ_P(object);
28217 	called_scope = obj->ce;
28218 
28219 	if (IS_CONST == IS_CONST &&
28220 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
28221 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
28222 	} else {
28223 	    zend_object *orig_obj = obj;
28224 
28225 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
28226 			zend_throw_error(NULL, "Object does not support method calls");
28227 
28228 
28229 			HANDLE_EXCEPTION();
28230 		}
28231 
28232 		/* First, locate the function. */
28233 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
28234 		if (UNEXPECTED(fbc == NULL)) {
28235 			if (EXPECTED(!EG(exception))) {
28236 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
28237 			}
28238 
28239 
28240 			HANDLE_EXCEPTION();
28241 		}
28242 		if (IS_CONST == IS_CONST &&
28243 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
28244 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
28245 		    EXPECTED(obj == orig_obj)) {
28246 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
28247 		}
28248 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
28249 			init_func_run_time_cache(&fbc->op_array);
28250 		}
28251 	}
28252 
28253 	call_info = ZEND_CALL_NESTED_FUNCTION;
28254 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
28255 		obj = NULL;
28256 	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
28257 		/* CV may be changed indirectly (e.g. when it's a reference) */
28258 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
28259 		GC_REFCOUNT(obj)++; /* For $this pointer */
28260 	}
28261 
28262 
28263 	if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
28264 		HANDLE_EXCEPTION();
28265 	}
28266 
28267 	call = zend_vm_stack_push_call_frame(call_info,
28268 		fbc, opline->extended_value, called_scope, obj);
28269 	call->prev_execute_data = EX(call);
28270 	EX(call) = call;
28271 
28272 	ZEND_VM_NEXT_OPCODE();
28273 }
28274 
28275 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28276 {
28277 	USE_OPLINE
28278 	zval *function_name;
28279 	zend_class_entry *ce;
28280 	zend_object *object;
28281 	zend_function *fbc;
28282 	zend_execute_data *call;
28283 
28284 	SAVE_OPLINE();
28285 
28286 	if (IS_UNUSED == IS_CONST) {
28287 		/* no function found. try a static method in class */
28288 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
28289 		if (UNEXPECTED(ce == NULL)) {
28290 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
28291 			if (UNEXPECTED(ce == NULL)) {
28292 				ZEND_ASSERT(EG(exception));
28293 
28294 				HANDLE_EXCEPTION();
28295 			}
28296 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
28297 		}
28298 	} else if (IS_UNUSED == IS_UNUSED) {
28299 		ce = zend_fetch_class(NULL, opline->op1.num);
28300 		if (UNEXPECTED(ce == NULL)) {
28301 			ZEND_ASSERT(EG(exception));
28302 
28303 			HANDLE_EXCEPTION();
28304 		}
28305 	} else {
28306 		ce = Z_CE_P(EX_VAR(opline->op1.var));
28307 	}
28308 
28309 	if (IS_UNUSED == IS_CONST &&
28310 	    IS_CONST == IS_CONST &&
28311 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
28312 		/* nothing to do */
28313 	} else if (IS_UNUSED != IS_CONST &&
28314 	           IS_CONST == IS_CONST &&
28315 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
28316 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
28317 	} else if (IS_CONST != IS_UNUSED) {
28318 
28319 
28320 		function_name = EX_CONSTANT(opline->op2);
28321 		if (IS_CONST != IS_CONST) {
28322 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
28323 				do {
28324 					if (IS_CONST & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
28325 						function_name = Z_REFVAL_P(function_name);
28326 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
28327 							break;
28328 						}
28329 					} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
28330 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
28331 						if (UNEXPECTED(EG(exception) != NULL)) {
28332 							HANDLE_EXCEPTION();
28333 						}
28334 					}
28335 					zend_throw_error(NULL, "Function name must be a string");
28336 
28337 					HANDLE_EXCEPTION();
28338 				} while (0);
28339  			}
28340 		}
28341 
28342 		if (ce->get_static_method) {
28343 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
28344 		} else {
28345 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
28346 		}
28347 		if (UNEXPECTED(fbc == NULL)) {
28348 			if (EXPECTED(!EG(exception))) {
28349 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
28350 			}
28351 
28352 			HANDLE_EXCEPTION();
28353 		}
28354 		if (IS_CONST == IS_CONST &&
28355 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
28356 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
28357 			if (IS_UNUSED == IS_CONST) {
28358 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
28359 			} else {
28360 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
28361 			}
28362 		}
28363 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
28364 			init_func_run_time_cache(&fbc->op_array);
28365 		}
28366 		if (IS_CONST != IS_CONST) {
28367 
28368 		}
28369 	} else {
28370 		if (UNEXPECTED(ce->constructor == NULL)) {
28371 			zend_throw_error(NULL, "Cannot call constructor");
28372 			HANDLE_EXCEPTION();
28373 		}
28374 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
28375 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
28376 			HANDLE_EXCEPTION();
28377 		}
28378 		fbc = ce->constructor;
28379 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
28380 			init_func_run_time_cache(&fbc->op_array);
28381 		}
28382 	}
28383 
28384 	object = NULL;
28385 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
28386 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
28387 			object = Z_OBJ(EX(This));
28388 			ce = object->ce;
28389 		} else {
28390 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
28391 				/* Allowed for PHP 4 compatibility. */
28392 				zend_error(
28393 					E_DEPRECATED,
28394 					"Non-static method %s::%s() should not be called statically",
28395 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
28396 				if (UNEXPECTED(EG(exception) != NULL)) {
28397 					HANDLE_EXCEPTION();
28398 				}
28399 			} else {
28400 				/* An internal function assumes $this is present and won't check that.
28401 				 * So PHP would crash by allowing the call. */
28402 				zend_throw_error(
28403 					zend_ce_error,
28404 					"Non-static method %s::%s() cannot be called statically",
28405 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
28406 				HANDLE_EXCEPTION();
28407 			}
28408 		}
28409 	}
28410 
28411 	if (IS_UNUSED == IS_UNUSED) {
28412 		/* previous opcode is ZEND_FETCH_CLASS */
28413 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
28414 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
28415 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
28416 				ce = Z_OBJCE(EX(This));
28417 			} else {
28418 				ce = Z_CE(EX(This));
28419 			}
28420 		}
28421 	}
28422 
28423 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
28424 		fbc, opline->extended_value, ce, object);
28425 	call->prev_execute_data = EX(call);
28426 	EX(call) = call;
28427 
28428 	ZEND_VM_NEXT_OPCODE();
28429 }
28430 
28431 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28432 {
28433 	USE_OPLINE
28434 	zend_constant *c;
28435 
28436 	if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))))) {
28437 		c = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
28438 	} else if ((c = zend_quick_get_constant(EX_CONSTANT(opline->op2) + 1, opline->extended_value)) == NULL) {
28439 		SAVE_OPLINE();
28440 
28441 		if ((opline->extended_value & IS_CONSTANT_UNQUALIFIED) != 0) {
28442 			char *actual = (char *)zend_memrchr(Z_STRVAL_P(EX_CONSTANT(opline->op2)), '\\', Z_STRLEN_P(EX_CONSTANT(opline->op2)));
28443 			if (!actual) {
28444 				ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_STR_P(EX_CONSTANT(opline->op2)));
28445 			} else {
28446 				actual++;
28447 				ZVAL_STRINGL(EX_VAR(opline->result.var),
28448 						actual, Z_STRLEN_P(EX_CONSTANT(opline->op2)) - (actual - Z_STRVAL_P(EX_CONSTANT(opline->op2))));
28449 			}
28450 			/* non-qualified constant - allow text substitution */
28451 			zend_error(E_WARNING, "Use of undefined constant %s - assumed '%s' (this will throw an Error in a future version of PHP)",
28452 					Z_STRVAL_P(EX_VAR(opline->result.var)), Z_STRVAL_P(EX_VAR(opline->result.var)));
28453 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28454 		} else {
28455 			zend_throw_error(NULL, "Undefined constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2)));
28456 			ZVAL_UNDEF(EX_VAR(opline->result.var));
28457 			HANDLE_EXCEPTION();
28458 		}
28459 	} else {
28460 		CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), c);
28461 	}
28462 
28463 #ifdef ZTS
28464 	if (c->flags & CONST_PERSISTENT) {
28465 		ZVAL_DUP(EX_VAR(opline->result.var), &c->value);
28466 	} else {
28467 		ZVAL_COPY(EX_VAR(opline->result.var), &c->value);
28468 	}
28469 #else
28470 	ZVAL_COPY(EX_VAR(opline->result.var), &c->value);
28471 #endif
28472 
28473 	ZEND_VM_NEXT_OPCODE();
28474 }
28475 
28476 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28477 {
28478 	zend_class_entry *ce, *scope;
28479 	zend_class_constant *c;
28480 	zval *value;
28481 	USE_OPLINE
28482 
28483 	SAVE_OPLINE();
28484 
28485 	do {
28486 		if (IS_UNUSED == IS_CONST) {
28487 			if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))))) {
28488 				value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
28489 #ifdef ZTS
28490 				ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
28491 #endif
28492 				break;
28493 			} else if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))))) {
28494 				ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
28495 			} else {
28496 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
28497 				if (UNEXPECTED(ce == NULL)) {
28498 					ZEND_ASSERT(EG(exception));
28499 					ZVAL_UNDEF(EX_VAR(opline->result.var));
28500 					HANDLE_EXCEPTION();
28501 				}
28502 				CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
28503 			}
28504 		} else {
28505 			if (IS_UNUSED == IS_UNUSED) {
28506 				ce = zend_fetch_class(NULL, opline->op1.num);
28507 				if (UNEXPECTED(ce == NULL)) {
28508 					ZEND_ASSERT(EG(exception));
28509 					ZVAL_UNDEF(EX_VAR(opline->result.var));
28510 					HANDLE_EXCEPTION();
28511 				}
28512 			} else {
28513 				ce = Z_CE_P(EX_VAR(opline->op1.var));
28514 			}
28515 			if (EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
28516 				value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
28517 				break;
28518 			}
28519 		}
28520 
28521 		if (EXPECTED((c = zend_hash_find_ptr(&ce->constants_table, Z_STR_P(EX_CONSTANT(opline->op2)))) != NULL)) {
28522 			scope = EX(func)->op_array.scope;
28523 			if (!zend_verify_const_access(c, scope)) {
28524 				zend_throw_error(NULL, "Cannot access %s const %s::%s", zend_visibility_string(Z_ACCESS_FLAGS(c->value)), ZSTR_VAL(ce->name), Z_STRVAL_P(EX_CONSTANT(opline->op2)));
28525 				ZVAL_UNDEF(EX_VAR(opline->result.var));
28526 				HANDLE_EXCEPTION();
28527 			}
28528 			value = &c->value;
28529 			if (Z_CONSTANT_P(value)) {
28530 				zval_update_constant_ex(value, c->ce);
28531 				if (UNEXPECTED(EG(exception) != NULL)) {
28532 					ZVAL_UNDEF(EX_VAR(opline->result.var));
28533 					HANDLE_EXCEPTION();
28534 				}
28535 			}
28536 			if (IS_UNUSED == IS_CONST) {
28537 				CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), value);
28538 			} else {
28539 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce, value);
28540 			}
28541 		} else {
28542 			zend_throw_error(NULL, "Undefined class constant '%s'", Z_STRVAL_P(EX_CONSTANT(opline->op2)));
28543 			ZVAL_UNDEF(EX_VAR(opline->result.var));
28544 			HANDLE_EXCEPTION();
28545 		}
28546 	} while (0);
28547 
28548 #ifdef ZTS
28549 	if (ce->type == ZEND_INTERNAL_CLASS) {
28550 		ZVAL_DUP(EX_VAR(opline->result.var), value);
28551 	} else {
28552 		ZVAL_COPY(EX_VAR(opline->result.var), value);
28553 	}
28554 #else
28555 	ZVAL_COPY(EX_VAR(opline->result.var), value);
28556 #endif
28557 
28558 	ZEND_VM_NEXT_OPCODE();
28559 }
28560 
28561 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28562 {
28563 	USE_OPLINE
28564 
28565 	zval *container;
28566 	zval *offset;
28567 
28568 	SAVE_OPLINE();
28569 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
28570 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
28571 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28572 	}
28573 	offset = EX_CONSTANT(opline->op2);
28574 
28575 	do {
28576 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
28577 			if (Z_ISREF_P(container)) {
28578 				container = Z_REFVAL_P(container);
28579 				if (Z_TYPE_P(container) != IS_OBJECT) {
28580 					break;
28581 				}
28582 			} else {
28583 				break;
28584 			}
28585 		}
28586 		if (Z_OBJ_HT_P(container)->unset_property) {
28587 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
28588 		} else {
28589 			zend_string *property_name = zval_get_string(offset);
28590 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
28591 			zend_string_release(property_name);
28592 		}
28593 	} while (0);
28594 
28595 
28596 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28597 }
28598 
28599 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28600 {
28601 	USE_OPLINE
28602 
28603 	zval *container;
28604 	int result;
28605 	zval *offset;
28606 
28607 	SAVE_OPLINE();
28608 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
28609 
28610 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
28611 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
28612 	}
28613 
28614 	offset = EX_CONSTANT(opline->op2);
28615 
28616 	if (IS_UNUSED == IS_CONST ||
28617 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
28618 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
28619 			container = Z_REFVAL_P(container);
28620 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
28621 				goto isset_no_object;
28622 			}
28623 		} else {
28624 			goto isset_no_object;
28625 		}
28626 	}
28627 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
28628 		zend_string *property_name = zval_get_string(offset);
28629 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
28630 		zend_string_release(property_name);
28631 isset_no_object:
28632 		result = ((opline->extended_value & ZEND_ISSET) == 0);
28633 	} else {
28634 		result =
28635 			((opline->extended_value & ZEND_ISSET) == 0) ^
28636 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
28637 	}
28638 
28639 
28640 	ZEND_VM_SMART_BRANCH(result, 1);
28641 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
28642 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
28643 }
28644 
28645 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28646 {
28647 	USE_OPLINE
28648 
28649 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
28650 
28651 	SAVE_OPLINE();
28652 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
28653 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
28654 
28655 
28656 		UNDEF_RESULT();
28657 		HANDLE_EXCEPTION();
28658 	}
28659 
28660 	/* Destroy the previously yielded value */
28661 	zval_ptr_dtor(&generator->value);
28662 
28663 	/* Destroy the previously yielded key */
28664 	zval_ptr_dtor(&generator->key);
28665 
28666 	/* Set the new yielded value */
28667 	if (IS_UNUSED != IS_UNUSED) {
28668 
28669 
28670 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
28671 			/* Constants and temporary variables aren't yieldable by reference,
28672 			 * but we still allow them with a notice. */
28673 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
28674 				zval *value;
28675 
28676 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
28677 
28678 				value = NULL;
28679 				ZVAL_COPY_VALUE(&generator->value, value);
28680 				if (IS_UNUSED == IS_CONST) {
28681 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
28682 						Z_ADDREF(generator->value);
28683 					}
28684 				}
28685 			} else {
28686 				zval *value_ptr = NULL;
28687 
28688 				/* If a function call result is yielded and the function did
28689 				 * not return by reference we throw a notice. */
28690 				if (IS_UNUSED == IS_VAR &&
28691 				    (value_ptr == &EG(uninitialized_zval) ||
28692 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
28693 				      !Z_ISREF_P(value_ptr)))) {
28694 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
28695 				} else {
28696 					ZVAL_MAKE_REF(value_ptr);
28697 				}
28698 				ZVAL_COPY(&generator->value, value_ptr);
28699 
28700 			}
28701 		} else {
28702 			zval *value = NULL;
28703 
28704 			/* Consts, temporary variables and references need copying */
28705 			if (IS_UNUSED == IS_CONST) {
28706 				ZVAL_COPY_VALUE(&generator->value, value);
28707 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
28708 					Z_ADDREF(generator->value);
28709 				}
28710 			} else if (IS_UNUSED == IS_TMP_VAR) {
28711 				ZVAL_COPY_VALUE(&generator->value, value);
28712             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
28713 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
28714 
28715 			} else {
28716 				ZVAL_COPY_VALUE(&generator->value, value);
28717 				if (IS_UNUSED == IS_CV) {
28718 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
28719 				}
28720 			}
28721 		}
28722 	} else {
28723 		/* If no value was specified yield null */
28724 		ZVAL_NULL(&generator->value);
28725 	}
28726 
28727 	/* Set the new yielded key */
28728 	if (IS_CONST != IS_UNUSED) {
28729 
28730 		zval *key = EX_CONSTANT(opline->op2);
28731 
28732 		/* Consts, temporary variables and references need copying */
28733 		if (IS_CONST == IS_CONST) {
28734 			ZVAL_COPY_VALUE(&generator->key, key);
28735 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
28736 				Z_ADDREF(generator->key);
28737 			}
28738 		} else if (IS_CONST == IS_TMP_VAR) {
28739 			ZVAL_COPY_VALUE(&generator->key, key);
28740 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
28741 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
28742 
28743 		} else {
28744 			ZVAL_COPY_VALUE(&generator->key, key);
28745 			if (IS_CONST == IS_CV) {
28746 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
28747 			}
28748 		}
28749 
28750 		if (Z_TYPE(generator->key) == IS_LONG
28751 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
28752 		) {
28753 			generator->largest_used_integer_key = Z_LVAL(generator->key);
28754 		}
28755 	} else {
28756 		/* If no key was specified we use auto-increment keys */
28757 		generator->largest_used_integer_key++;
28758 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
28759 	}
28760 
28761 	if (RETURN_VALUE_USED(opline)) {
28762 		/* If the return value of yield is used set the send
28763 		 * target and initialize it to NULL */
28764 		generator->send_target = EX_VAR(opline->result.var);
28765 		ZVAL_NULL(generator->send_target);
28766 	} else {
28767 		generator->send_target = NULL;
28768 	}
28769 
28770 	/* We increment to the next op, so we are at the correct position when the
28771 	 * generator is resumed. */
28772 	ZEND_VM_INC_OPCODE();
28773 
28774 	/* The GOTO VM uses a local opline variable. We need to set the opline
28775 	 * variable in execute_data so we don't resume at an old position. */
28776 	SAVE_OPLINE();
28777 
28778 	ZEND_VM_RETURN();
28779 }
28780 
28781 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28782 {
28783 	USE_OPLINE
28784 
28785 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
28786 
28787 	SAVE_OPLINE();
28788 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
28789 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
28790 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
28791 
28792 		UNDEF_RESULT();
28793 		HANDLE_EXCEPTION();
28794 	}
28795 
28796 	/* Destroy the previously yielded value */
28797 	zval_ptr_dtor(&generator->value);
28798 
28799 	/* Destroy the previously yielded key */
28800 	zval_ptr_dtor(&generator->key);
28801 
28802 	/* Set the new yielded value */
28803 	if (IS_UNUSED != IS_UNUSED) {
28804 
28805 
28806 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
28807 			/* Constants and temporary variables aren't yieldable by reference,
28808 			 * but we still allow them with a notice. */
28809 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
28810 				zval *value;
28811 
28812 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
28813 
28814 				value = NULL;
28815 				ZVAL_COPY_VALUE(&generator->value, value);
28816 				if (IS_UNUSED == IS_CONST) {
28817 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
28818 						Z_ADDREF(generator->value);
28819 					}
28820 				}
28821 			} else {
28822 				zval *value_ptr = NULL;
28823 
28824 				/* If a function call result is yielded and the function did
28825 				 * not return by reference we throw a notice. */
28826 				if (IS_UNUSED == IS_VAR &&
28827 				    (value_ptr == &EG(uninitialized_zval) ||
28828 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
28829 				      !Z_ISREF_P(value_ptr)))) {
28830 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
28831 				} else {
28832 					ZVAL_MAKE_REF(value_ptr);
28833 				}
28834 				ZVAL_COPY(&generator->value, value_ptr);
28835 
28836 			}
28837 		} else {
28838 			zval *value = NULL;
28839 
28840 			/* Consts, temporary variables and references need copying */
28841 			if (IS_UNUSED == IS_CONST) {
28842 				ZVAL_COPY_VALUE(&generator->value, value);
28843 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
28844 					Z_ADDREF(generator->value);
28845 				}
28846 			} else if (IS_UNUSED == IS_TMP_VAR) {
28847 				ZVAL_COPY_VALUE(&generator->value, value);
28848             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
28849 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
28850 
28851 			} else {
28852 				ZVAL_COPY_VALUE(&generator->value, value);
28853 				if (IS_UNUSED == IS_CV) {
28854 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
28855 				}
28856 			}
28857 		}
28858 	} else {
28859 		/* If no value was specified yield null */
28860 		ZVAL_NULL(&generator->value);
28861 	}
28862 
28863 	/* Set the new yielded key */
28864 	if (IS_TMP_VAR != IS_UNUSED) {
28865 		zend_free_op free_op2;
28866 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
28867 
28868 		/* Consts, temporary variables and references need copying */
28869 		if (IS_TMP_VAR == IS_CONST) {
28870 			ZVAL_COPY_VALUE(&generator->key, key);
28871 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
28872 				Z_ADDREF(generator->key);
28873 			}
28874 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
28875 			ZVAL_COPY_VALUE(&generator->key, key);
28876 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
28877 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
28878 
28879 		} else {
28880 			ZVAL_COPY_VALUE(&generator->key, key);
28881 			if (IS_TMP_VAR == IS_CV) {
28882 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
28883 			}
28884 		}
28885 
28886 		if (Z_TYPE(generator->key) == IS_LONG
28887 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
28888 		) {
28889 			generator->largest_used_integer_key = Z_LVAL(generator->key);
28890 		}
28891 	} else {
28892 		/* If no key was specified we use auto-increment keys */
28893 		generator->largest_used_integer_key++;
28894 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
28895 	}
28896 
28897 	if (RETURN_VALUE_USED(opline)) {
28898 		/* If the return value of yield is used set the send
28899 		 * target and initialize it to NULL */
28900 		generator->send_target = EX_VAR(opline->result.var);
28901 		ZVAL_NULL(generator->send_target);
28902 	} else {
28903 		generator->send_target = NULL;
28904 	}
28905 
28906 	/* We increment to the next op, so we are at the correct position when the
28907 	 * generator is resumed. */
28908 	ZEND_VM_INC_OPCODE();
28909 
28910 	/* The GOTO VM uses a local opline variable. We need to set the opline
28911 	 * variable in execute_data so we don't resume at an old position. */
28912 	SAVE_OPLINE();
28913 
28914 	ZEND_VM_RETURN();
28915 }
28916 
28917 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
28918 {
28919 	USE_OPLINE
28920 
28921 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
28922 
28923 	SAVE_OPLINE();
28924 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
28925 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
28926 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
28927 
28928 		UNDEF_RESULT();
28929 		HANDLE_EXCEPTION();
28930 	}
28931 
28932 	/* Destroy the previously yielded value */
28933 	zval_ptr_dtor(&generator->value);
28934 
28935 	/* Destroy the previously yielded key */
28936 	zval_ptr_dtor(&generator->key);
28937 
28938 	/* Set the new yielded value */
28939 	if (IS_UNUSED != IS_UNUSED) {
28940 
28941 
28942 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
28943 			/* Constants and temporary variables aren't yieldable by reference,
28944 			 * but we still allow them with a notice. */
28945 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
28946 				zval *value;
28947 
28948 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
28949 
28950 				value = NULL;
28951 				ZVAL_COPY_VALUE(&generator->value, value);
28952 				if (IS_UNUSED == IS_CONST) {
28953 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
28954 						Z_ADDREF(generator->value);
28955 					}
28956 				}
28957 			} else {
28958 				zval *value_ptr = NULL;
28959 
28960 				/* If a function call result is yielded and the function did
28961 				 * not return by reference we throw a notice. */
28962 				if (IS_UNUSED == IS_VAR &&
28963 				    (value_ptr == &EG(uninitialized_zval) ||
28964 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
28965 				      !Z_ISREF_P(value_ptr)))) {
28966 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
28967 				} else {
28968 					ZVAL_MAKE_REF(value_ptr);
28969 				}
28970 				ZVAL_COPY(&generator->value, value_ptr);
28971 
28972 			}
28973 		} else {
28974 			zval *value = NULL;
28975 
28976 			/* Consts, temporary variables and references need copying */
28977 			if (IS_UNUSED == IS_CONST) {
28978 				ZVAL_COPY_VALUE(&generator->value, value);
28979 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
28980 					Z_ADDREF(generator->value);
28981 				}
28982 			} else if (IS_UNUSED == IS_TMP_VAR) {
28983 				ZVAL_COPY_VALUE(&generator->value, value);
28984             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
28985 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
28986 
28987 			} else {
28988 				ZVAL_COPY_VALUE(&generator->value, value);
28989 				if (IS_UNUSED == IS_CV) {
28990 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
28991 				}
28992 			}
28993 		}
28994 	} else {
28995 		/* If no value was specified yield null */
28996 		ZVAL_NULL(&generator->value);
28997 	}
28998 
28999 	/* Set the new yielded key */
29000 	if (IS_VAR != IS_UNUSED) {
29001 		zend_free_op free_op2;
29002 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
29003 
29004 		/* Consts, temporary variables and references need copying */
29005 		if (IS_VAR == IS_CONST) {
29006 			ZVAL_COPY_VALUE(&generator->key, key);
29007 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
29008 				Z_ADDREF(generator->key);
29009 			}
29010 		} else if (IS_VAR == IS_TMP_VAR) {
29011 			ZVAL_COPY_VALUE(&generator->key, key);
29012 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
29013 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
29014 			zval_ptr_dtor_nogc(free_op2);
29015 		} else {
29016 			ZVAL_COPY_VALUE(&generator->key, key);
29017 			if (IS_VAR == IS_CV) {
29018 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
29019 			}
29020 		}
29021 
29022 		if (Z_TYPE(generator->key) == IS_LONG
29023 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
29024 		) {
29025 			generator->largest_used_integer_key = Z_LVAL(generator->key);
29026 		}
29027 	} else {
29028 		/* If no key was specified we use auto-increment keys */
29029 		generator->largest_used_integer_key++;
29030 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
29031 	}
29032 
29033 	if (RETURN_VALUE_USED(opline)) {
29034 		/* If the return value of yield is used set the send
29035 		 * target and initialize it to NULL */
29036 		generator->send_target = EX_VAR(opline->result.var);
29037 		ZVAL_NULL(generator->send_target);
29038 	} else {
29039 		generator->send_target = NULL;
29040 	}
29041 
29042 	/* We increment to the next op, so we are at the correct position when the
29043 	 * generator is resumed. */
29044 	ZEND_VM_INC_OPCODE();
29045 
29046 	/* The GOTO VM uses a local opline variable. We need to set the opline
29047 	 * variable in execute_data so we don't resume at an old position. */
29048 	SAVE_OPLINE();
29049 
29050 	ZEND_VM_RETURN();
29051 }
29052 
29053 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29054 {
29055 	USE_OPLINE
29056 	zval *function_name;
29057 	zend_class_entry *ce;
29058 	zend_object *object;
29059 	zend_function *fbc;
29060 	zend_execute_data *call;
29061 
29062 	SAVE_OPLINE();
29063 
29064 	if (IS_UNUSED == IS_CONST) {
29065 		/* no function found. try a static method in class */
29066 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
29067 		if (UNEXPECTED(ce == NULL)) {
29068 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
29069 			if (UNEXPECTED(ce == NULL)) {
29070 				ZEND_ASSERT(EG(exception));
29071 
29072 				HANDLE_EXCEPTION();
29073 			}
29074 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
29075 		}
29076 	} else if (IS_UNUSED == IS_UNUSED) {
29077 		ce = zend_fetch_class(NULL, opline->op1.num);
29078 		if (UNEXPECTED(ce == NULL)) {
29079 			ZEND_ASSERT(EG(exception));
29080 
29081 			HANDLE_EXCEPTION();
29082 		}
29083 	} else {
29084 		ce = Z_CE_P(EX_VAR(opline->op1.var));
29085 	}
29086 
29087 	if (IS_UNUSED == IS_CONST &&
29088 	    IS_UNUSED == IS_CONST &&
29089 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
29090 		/* nothing to do */
29091 	} else if (IS_UNUSED != IS_CONST &&
29092 	           IS_UNUSED == IS_CONST &&
29093 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
29094 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
29095 	} else if (IS_UNUSED != IS_UNUSED) {
29096 
29097 
29098 		function_name = NULL;
29099 		if (IS_UNUSED != IS_CONST) {
29100 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
29101 				do {
29102 					if (IS_UNUSED & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
29103 						function_name = Z_REFVAL_P(function_name);
29104 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
29105 							break;
29106 						}
29107 					} else if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
29108 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
29109 						if (UNEXPECTED(EG(exception) != NULL)) {
29110 							HANDLE_EXCEPTION();
29111 						}
29112 					}
29113 					zend_throw_error(NULL, "Function name must be a string");
29114 
29115 					HANDLE_EXCEPTION();
29116 				} while (0);
29117  			}
29118 		}
29119 
29120 		if (ce->get_static_method) {
29121 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
29122 		} else {
29123 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_UNUSED == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
29124 		}
29125 		if (UNEXPECTED(fbc == NULL)) {
29126 			if (EXPECTED(!EG(exception))) {
29127 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
29128 			}
29129 
29130 			HANDLE_EXCEPTION();
29131 		}
29132 		if (IS_UNUSED == IS_CONST &&
29133 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
29134 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
29135 			if (IS_UNUSED == IS_CONST) {
29136 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
29137 			} else {
29138 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
29139 			}
29140 		}
29141 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
29142 			init_func_run_time_cache(&fbc->op_array);
29143 		}
29144 		if (IS_UNUSED != IS_CONST) {
29145 
29146 		}
29147 	} else {
29148 		if (UNEXPECTED(ce->constructor == NULL)) {
29149 			zend_throw_error(NULL, "Cannot call constructor");
29150 			HANDLE_EXCEPTION();
29151 		}
29152 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
29153 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
29154 			HANDLE_EXCEPTION();
29155 		}
29156 		fbc = ce->constructor;
29157 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
29158 			init_func_run_time_cache(&fbc->op_array);
29159 		}
29160 	}
29161 
29162 	object = NULL;
29163 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
29164 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
29165 			object = Z_OBJ(EX(This));
29166 			ce = object->ce;
29167 		} else {
29168 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
29169 				/* Allowed for PHP 4 compatibility. */
29170 				zend_error(
29171 					E_DEPRECATED,
29172 					"Non-static method %s::%s() should not be called statically",
29173 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
29174 				if (UNEXPECTED(EG(exception) != NULL)) {
29175 					HANDLE_EXCEPTION();
29176 				}
29177 			} else {
29178 				/* An internal function assumes $this is present and won't check that.
29179 				 * So PHP would crash by allowing the call. */
29180 				zend_throw_error(
29181 					zend_ce_error,
29182 					"Non-static method %s::%s() cannot be called statically",
29183 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
29184 				HANDLE_EXCEPTION();
29185 			}
29186 		}
29187 	}
29188 
29189 	if (IS_UNUSED == IS_UNUSED) {
29190 		/* previous opcode is ZEND_FETCH_CLASS */
29191 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
29192 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
29193 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
29194 				ce = Z_OBJCE(EX(This));
29195 			} else {
29196 				ce = Z_CE(EX(This));
29197 			}
29198 		}
29199 	}
29200 
29201 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
29202 		fbc, opline->extended_value, ce, object);
29203 	call->prev_execute_data = EX(call);
29204 	EX(call) = call;
29205 
29206 	ZEND_VM_NEXT_OPCODE();
29207 }
29208 
29209 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29210 {
29211 	USE_OPLINE
29212 
29213 	SAVE_OPLINE();
29214 	if (IS_UNUSED == IS_UNUSED) {
29215 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
29216 	} else {
29217 /* prevents "undefined variable opline" errors */
29218 #if 0 || (IS_UNUSED != IS_UNUSED)
29219 		zval *retval_ref, *retval_ptr;
29220 
29221 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
29222 
29223 		retval_ref = retval_ptr = NULL;
29224 
29225 		if (IS_UNUSED == IS_CONST) {
29226 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
29227 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
29228 		} else if (IS_UNUSED == IS_VAR) {
29229 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
29230 				retval_ptr = Z_INDIRECT_P(retval_ptr);
29231 			}
29232 			ZVAL_DEREF(retval_ptr);
29233 		} else if (IS_UNUSED == IS_CV) {
29234 			ZVAL_DEREF(retval_ptr);
29235 		}
29236 
29237 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
29238 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
29239 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
29240 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
29241 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
29242 			&& retval_ref != retval_ptr)
29243 		) {
29244 			/* A cast might happen - unwrap the reference if this is a by-value return */
29245 			if (Z_REFCOUNT_P(retval_ref) == 1) {
29246 				ZVAL_UNREF(retval_ref);
29247 			} else {
29248 				Z_DELREF_P(retval_ref);
29249 				ZVAL_COPY(retval_ref, retval_ptr);
29250 			}
29251 			retval_ptr = retval_ref;
29252 		}
29253 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
29254 #endif
29255 	}
29256 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29257 }
29258 
29259 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29260 {
29261 	USE_OPLINE
29262 
29263 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
29264 
29265 	SAVE_OPLINE();
29266 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
29267 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
29268 
29269 
29270 		UNDEF_RESULT();
29271 		HANDLE_EXCEPTION();
29272 	}
29273 
29274 	/* Destroy the previously yielded value */
29275 	zval_ptr_dtor(&generator->value);
29276 
29277 	/* Destroy the previously yielded key */
29278 	zval_ptr_dtor(&generator->key);
29279 
29280 	/* Set the new yielded value */
29281 	if (IS_UNUSED != IS_UNUSED) {
29282 
29283 
29284 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
29285 			/* Constants and temporary variables aren't yieldable by reference,
29286 			 * but we still allow them with a notice. */
29287 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
29288 				zval *value;
29289 
29290 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
29291 
29292 				value = NULL;
29293 				ZVAL_COPY_VALUE(&generator->value, value);
29294 				if (IS_UNUSED == IS_CONST) {
29295 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
29296 						Z_ADDREF(generator->value);
29297 					}
29298 				}
29299 			} else {
29300 				zval *value_ptr = NULL;
29301 
29302 				/* If a function call result is yielded and the function did
29303 				 * not return by reference we throw a notice. */
29304 				if (IS_UNUSED == IS_VAR &&
29305 				    (value_ptr == &EG(uninitialized_zval) ||
29306 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
29307 				      !Z_ISREF_P(value_ptr)))) {
29308 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
29309 				} else {
29310 					ZVAL_MAKE_REF(value_ptr);
29311 				}
29312 				ZVAL_COPY(&generator->value, value_ptr);
29313 
29314 			}
29315 		} else {
29316 			zval *value = NULL;
29317 
29318 			/* Consts, temporary variables and references need copying */
29319 			if (IS_UNUSED == IS_CONST) {
29320 				ZVAL_COPY_VALUE(&generator->value, value);
29321 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
29322 					Z_ADDREF(generator->value);
29323 				}
29324 			} else if (IS_UNUSED == IS_TMP_VAR) {
29325 				ZVAL_COPY_VALUE(&generator->value, value);
29326             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
29327 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
29328 
29329 			} else {
29330 				ZVAL_COPY_VALUE(&generator->value, value);
29331 				if (IS_UNUSED == IS_CV) {
29332 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
29333 				}
29334 			}
29335 		}
29336 	} else {
29337 		/* If no value was specified yield null */
29338 		ZVAL_NULL(&generator->value);
29339 	}
29340 
29341 	/* Set the new yielded key */
29342 	if (IS_UNUSED != IS_UNUSED) {
29343 
29344 		zval *key = NULL;
29345 
29346 		/* Consts, temporary variables and references need copying */
29347 		if (IS_UNUSED == IS_CONST) {
29348 			ZVAL_COPY_VALUE(&generator->key, key);
29349 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
29350 				Z_ADDREF(generator->key);
29351 			}
29352 		} else if (IS_UNUSED == IS_TMP_VAR) {
29353 			ZVAL_COPY_VALUE(&generator->key, key);
29354 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
29355 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
29356 
29357 		} else {
29358 			ZVAL_COPY_VALUE(&generator->key, key);
29359 			if (IS_UNUSED == IS_CV) {
29360 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
29361 			}
29362 		}
29363 
29364 		if (Z_TYPE(generator->key) == IS_LONG
29365 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
29366 		) {
29367 			generator->largest_used_integer_key = Z_LVAL(generator->key);
29368 		}
29369 	} else {
29370 		/* If no key was specified we use auto-increment keys */
29371 		generator->largest_used_integer_key++;
29372 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
29373 	}
29374 
29375 	if (RETURN_VALUE_USED(opline)) {
29376 		/* If the return value of yield is used set the send
29377 		 * target and initialize it to NULL */
29378 		generator->send_target = EX_VAR(opline->result.var);
29379 		ZVAL_NULL(generator->send_target);
29380 	} else {
29381 		generator->send_target = NULL;
29382 	}
29383 
29384 	/* We increment to the next op, so we are at the correct position when the
29385 	 * generator is resumed. */
29386 	ZEND_VM_INC_OPCODE();
29387 
29388 	/* The GOTO VM uses a local opline variable. We need to set the opline
29389 	 * variable in execute_data so we don't resume at an old position. */
29390 	SAVE_OPLINE();
29391 
29392 	ZEND_VM_RETURN();
29393 }
29394 
29395 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29396 {
29397 	USE_OPLINE
29398 
29399 	if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
29400 		zval *result = EX_VAR(opline->result.var);
29401 
29402 		ZVAL_OBJ(result, Z_OBJ(EX(This)));
29403 		Z_ADDREF_P(result);
29404 		ZEND_VM_NEXT_OPCODE();
29405 	} else {
29406 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29407 	}
29408 }
29409 
29410 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29411 {
29412 	USE_OPLINE
29413 
29414 	ZVAL_BOOL(EX_VAR(opline->result.var),
29415 		(opline->extended_value & ZEND_ISSET) ?
29416 			 (Z_TYPE(EX(This)) == IS_OBJECT) :
29417 			 (Z_TYPE(EX(This)) != IS_OBJECT));
29418 	ZEND_VM_NEXT_OPCODE();
29419 }
29420 
29421 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29422 {
29423 	USE_OPLINE
29424 
29425 	if (IS_UNUSED == IS_UNUSED) {
29426 		if (UNEXPECTED(!EX(func)->common.scope)) {
29427 			SAVE_OPLINE();
29428 			zend_error(E_WARNING, "get_class() called without object from outside a class");
29429 			ZVAL_FALSE(EX_VAR(opline->result.var));
29430 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29431 		} else {
29432 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
29433 			ZEND_VM_NEXT_OPCODE();
29434 		}
29435 	} else {
29436 
29437 		zval *op1;
29438 
29439 		SAVE_OPLINE();
29440 		op1 = NULL;
29441 		if (Z_TYPE_P(op1) == IS_OBJECT) {
29442 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
29443 		} else {
29444 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
29445 			ZVAL_FALSE(EX_VAR(opline->result.var));
29446 		}
29447 
29448 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29449 	}
29450 }
29451 
29452 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29453 {
29454 	USE_OPLINE
29455 
29456 	if (Z_TYPE(EX(This)) == IS_OBJECT) {
29457 		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE(EX(This))->name);
29458 	} else if (Z_CE(EX(This))) {
29459 		ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_CE(EX(This))->name);
29460 	} else {
29461 		ZVAL_FALSE(EX_VAR(opline->result.var));
29462 		if (UNEXPECTED(!EX(func)->common.scope)) {
29463 			SAVE_OPLINE();
29464 			zend_error(E_WARNING, "get_called_class() called from outside a class");
29465 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29466 		}
29467 	}
29468 	ZEND_VM_NEXT_OPCODE();
29469 }
29470 
29471 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29472 {
29473 	USE_OPLINE
29474 
29475 	ZVAL_LONG(EX_VAR(opline->result.var), EX_NUM_ARGS());
29476 	ZEND_VM_NEXT_OPCODE();
29477 }
29478 
29479 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29480 {
29481 	USE_OPLINE
29482 	zend_array *ht;
29483 	uint32_t arg_count, result_size, skip;
29484 
29485 	arg_count = EX_NUM_ARGS();
29486 	if (IS_UNUSED == IS_CONST) {
29487 		skip = Z_LVAL_P(EX_CONSTANT(opline->op1));
29488 		if (arg_count < skip) {
29489 			result_size = 0;
29490 		} else {
29491 			result_size = arg_count - skip;
29492 		}
29493 	} else {
29494 		skip = 0;
29495 		result_size = arg_count;
29496 	}
29497 
29498 	ht = (zend_array *) emalloc(sizeof(zend_array));
29499 	zend_hash_init(ht, result_size, NULL, ZVAL_PTR_DTOR, 0);
29500 	ZVAL_ARR(EX_VAR(opline->result.var), ht);
29501 
29502 	if (result_size) {
29503 		uint32_t first_extra_arg = EX(func)->op_array.num_args;
29504 		zend_hash_real_init(ht, 1);
29505 		ZEND_HASH_FILL_PACKED(ht) {
29506 			zval *p, *q;
29507 			uint32_t i = skip;
29508 			p = EX_VAR_NUM(i);
29509 			if (arg_count > first_extra_arg) {
29510 				while (i < first_extra_arg) {
29511 					q = p;
29512 					if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
29513 						ZVAL_DEREF(q);
29514 						if (Z_OPT_REFCOUNTED_P(q)) {
29515 							Z_ADDREF_P(q);
29516 						}
29517 					} else {
29518 						q = &EG(uninitialized_zval);
29519 					}
29520 					ZEND_HASH_FILL_ADD(q);
29521 					p++;
29522 					i++;
29523 				}
29524 				if (skip < first_extra_arg) {
29525 					skip = 0;
29526 				} else {
29527 					skip -= first_extra_arg;
29528 				}
29529 				p = EX_VAR_NUM(EX(func)->op_array.last_var + EX(func)->op_array.T + skip);
29530 			}
29531 			while (i < arg_count) {
29532 				q = p;
29533 				if (EXPECTED(Z_TYPE_INFO_P(q) != IS_UNDEF)) {
29534 					ZVAL_DEREF(q);
29535 					if (Z_OPT_REFCOUNTED_P(q)) {
29536 						Z_ADDREF_P(q);
29537 					}
29538 				} else {
29539 					q = &EG(uninitialized_zval);
29540 				}
29541 				ZEND_HASH_FILL_ADD(q);
29542 				p++;
29543 				i++;
29544 			}
29545 		} ZEND_HASH_FILL_END();
29546 		ht->nNumOfElements = result_size;
29547 	}
29548 	ZEND_VM_NEXT_OPCODE();
29549 }
29550 
29551 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
29552 {
29553 	USE_OPLINE
29554 	zend_free_op free_op_data1;
29555 	zval *object;
29556 	zval *property;
29557 	zval *value;
29558 	zval *zptr;
29559 
29560 	SAVE_OPLINE();
29561 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
29562 
29563 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
29564 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29565 	}
29566 
29567 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29568 
29569 	do {
29570 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
29571 
29572 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
29573 			ZVAL_DEREF(object);
29574 			if (UNEXPECTED(!make_real_object(object))) {
29575 				zend_string *property_name = zval_get_string(property);
29576 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
29577 				zend_string_release(property_name);
29578 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29579 					ZVAL_NULL(EX_VAR(opline->result.var));
29580 				}
29581 				break;
29582 			}
29583 		}
29584 
29585 		/* here we are sure we are dealing with an object */
29586 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
29587 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
29588 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
29589 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29590 					ZVAL_NULL(EX_VAR(opline->result.var));
29591 				}
29592 			} else {
29593 				ZVAL_DEREF(zptr);
29594 				SEPARATE_ZVAL_NOREF(zptr);
29595 
29596 				binary_op(zptr, zptr, value);
29597 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29598 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
29599 				}
29600 			}
29601 		} else {
29602 			zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
29603 		}
29604 	} while (0);
29605 
29606 	FREE_OP(free_op_data1);
29607 
29608 
29609 	/* assign_obj has two opcodes! */
29610 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
29611 }
29612 
29613 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
29614 {
29615 #if 1 && IS_CV == IS_UNUSED
29616 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29617 #else
29618 # if 0 || IS_UNUSED != IS_UNUSED
29619 	USE_OPLINE
29620 
29621 	if (EXPECTED(0)) {
29622 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29623 	}
29624 	if (EXPECTED(0)) {
29625 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29626 	}
29627 # endif
29628 
29629 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29630 #endif
29631 }
29632 
29633 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29634 {
29635 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29636 }
29637 
29638 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29639 {
29640 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29641 }
29642 
29643 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29644 {
29645 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29646 }
29647 
29648 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29649 {
29650 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29651 }
29652 
29653 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29654 {
29655 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29656 }
29657 
29658 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29659 {
29660 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29661 }
29662 
29663 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29664 {
29665 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29666 }
29667 
29668 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29669 {
29670 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29671 }
29672 
29673 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29674 {
29675 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29676 }
29677 
29678 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29679 {
29680 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29681 }
29682 
29683 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29684 {
29685 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29686 }
29687 
29688 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29689 {
29690 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_CV_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29691 }
29692 
29693 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
29694 {
29695 	USE_OPLINE
29696 
29697 	zval *object;
29698 	zval *property;
29699 	zval *zptr;
29700 
29701 	SAVE_OPLINE();
29702 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
29703 
29704 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
29705 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29706 	}
29707 
29708 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29709 
29710 	do {
29711 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
29712 			ZVAL_DEREF(object);
29713 			if (UNEXPECTED(!make_real_object(object))) {
29714 				zend_string *property_name = zval_get_string(property);
29715 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
29716 				zend_string_release(property_name);
29717 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29718 					ZVAL_NULL(EX_VAR(opline->result.var));
29719 				}
29720 				break;
29721 			}
29722 		}
29723 
29724 		/* here we are sure we are dealing with an object */
29725 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
29726 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
29727 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
29728 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29729 					ZVAL_NULL(EX_VAR(opline->result.var));
29730 				}
29731 			} else {
29732 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
29733 					if (inc) {
29734 						fast_long_increment_function(zptr);
29735 					} else {
29736 						fast_long_decrement_function(zptr);
29737 					}
29738 				} else {
29739 					ZVAL_DEREF(zptr);
29740 					SEPARATE_ZVAL_NOREF(zptr);
29741 
29742 					if (inc) {
29743 						increment_function(zptr);
29744 					} else {
29745 						decrement_function(zptr);
29746 					}
29747 				}
29748 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
29749 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
29750 				}
29751 			}
29752 		} else {
29753 			zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
29754 		}
29755 	} while (0);
29756 
29757 
29758 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29759 }
29760 
29761 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29762 {
29763 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29764 }
29765 
29766 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29767 {
29768 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29769 }
29770 
29771 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
29772 {
29773 	USE_OPLINE
29774 
29775 	zval *object;
29776 	zval *property;
29777 	zval *zptr;
29778 
29779 	SAVE_OPLINE();
29780 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
29781 
29782 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
29783 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29784 	}
29785 
29786 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29787 
29788 	do {
29789 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
29790 			ZVAL_DEREF(object);
29791 			if (UNEXPECTED(!make_real_object(object))) {
29792 				zend_string *property_name = zval_get_string(property);
29793 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
29794 				zend_string_release(property_name);
29795 				ZVAL_NULL(EX_VAR(opline->result.var));
29796 				break;
29797 			}
29798 		}
29799 
29800 		/* here we are sure we are dealing with an object */
29801 
29802 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
29803 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
29804 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
29805 				ZVAL_NULL(EX_VAR(opline->result.var));
29806 			} else {
29807 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
29808 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
29809 					if (inc) {
29810 						fast_long_increment_function(zptr);
29811 					} else {
29812 						fast_long_decrement_function(zptr);
29813 					}
29814 				} else {
29815 					ZVAL_DEREF(zptr);
29816 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
29817 					zval_opt_copy_ctor(zptr);
29818 					if (inc) {
29819 						increment_function(zptr);
29820 					} else {
29821 						decrement_function(zptr);
29822 					}
29823 				}
29824 			}
29825 		} else {
29826 			zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
29827 		}
29828 	} while (0);
29829 
29830 
29831 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29832 }
29833 
29834 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29835 {
29836 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29837 }
29838 
29839 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29840 {
29841 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
29842 }
29843 
29844 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29845 {
29846 	USE_OPLINE
29847 
29848 	zval *container;
29849 
29850 	zval *offset;
29851 
29852 	SAVE_OPLINE();
29853 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
29854 
29855 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
29856 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29857 	}
29858 
29859 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29860 
29861 	if (IS_UNUSED == IS_CONST ||
29862 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
29863 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
29864 			container = Z_REFVAL_P(container);
29865 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
29866 				goto fetch_obj_r_no_object;
29867 			}
29868 		} else {
29869 			goto fetch_obj_r_no_object;
29870 		}
29871 	}
29872 
29873 	/* here we are sure we are dealing with an object */
29874 	do {
29875 		zend_object *zobj = Z_OBJ_P(container);
29876 		zval *retval;
29877 
29878 		if (IS_CV == IS_CONST &&
29879 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
29880 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
29881 
29882 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
29883 				retval = OBJ_PROP(zobj, prop_offset);
29884 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
29885 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
29886 					break;
29887 				}
29888 			} else if (EXPECTED(zobj->properties != NULL)) {
29889 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
29890 				if (EXPECTED(retval)) {
29891 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
29892 					break;
29893 				}
29894 			}
29895 		}
29896 
29897 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
29898 			zend_string *property_name;
29899 fetch_obj_r_no_object:
29900 			property_name = zval_get_string(offset);
29901 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
29902 			zend_string_release(property_name);
29903 			ZVAL_NULL(EX_VAR(opline->result.var));
29904 		} else {
29905 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
29906 
29907 			if (retval != EX_VAR(opline->result.var)) {
29908 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
29909 			}
29910 		}
29911 	} while (0);
29912 
29913 
29914 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29915 }
29916 
29917 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29918 {
29919 	USE_OPLINE
29920 	zend_free_op free_op1;
29921 	zval *property;
29922 	zval *container;
29923 
29924 	SAVE_OPLINE();
29925 
29926 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
29927 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
29928 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29929 	}
29930 
29931 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29932 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
29933 
29934 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
29935 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
29936 	}
29937 
29938 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29939 }
29940 
29941 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29942 {
29943 	USE_OPLINE
29944 	zend_free_op free_op1;
29945 	zval *property;
29946 	zval *container;
29947 
29948 	SAVE_OPLINE();
29949 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
29950 
29951 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
29952 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29953 	}
29954 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29955 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
29956 
29957 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
29958 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
29959 	}
29960 
29961 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
29962 }
29963 
29964 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
29965 {
29966 	USE_OPLINE
29967 
29968 	zval *container;
29969 
29970 	zval *offset;
29971 
29972 	SAVE_OPLINE();
29973 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
29974 
29975 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
29976 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
29977 	}
29978 
29979 	offset  = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
29980 
29981 	if (IS_UNUSED == IS_CONST ||
29982 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
29983 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
29984 			container = Z_REFVAL_P(container);
29985 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
29986 				goto fetch_obj_is_no_object;
29987 			}
29988 		} else {
29989 			goto fetch_obj_is_no_object;
29990 		}
29991 	}
29992 
29993 	/* here we are sure we are dealing with an object */
29994 	do {
29995 		zend_object *zobj = Z_OBJ_P(container);
29996 		zval *retval;
29997 
29998 		if (IS_CV == IS_CONST &&
29999 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
30000 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
30001 
30002 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
30003 				retval = OBJ_PROP(zobj, prop_offset);
30004 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
30005 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
30006 					break;
30007 				}
30008 			} else if (EXPECTED(zobj->properties != NULL)) {
30009 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
30010 				if (EXPECTED(retval)) {
30011 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
30012 					break;
30013 				}
30014 			}
30015 		}
30016 
30017 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
30018 fetch_obj_is_no_object:
30019 			ZVAL_NULL(EX_VAR(opline->result.var));
30020 		} else {
30021 
30022 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
30023 
30024 			if (retval != EX_VAR(opline->result.var)) {
30025 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
30026 			}
30027 		}
30028 	} while (0);
30029 
30030 
30031 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30032 }
30033 
30034 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30035 {
30036 	USE_OPLINE
30037 	zval *container;
30038 
30039 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
30040 		/* Behave like FETCH_OBJ_W */
30041 		zend_free_op free_op1;
30042 		zval *property;
30043 
30044 		SAVE_OPLINE();
30045 		container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
30046 
30047 		if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
30048 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30049 		}
30050 		if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
30051 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
30052 
30053 
30054 			ZVAL_UNDEF(EX_VAR(opline->result.var));
30055 			HANDLE_EXCEPTION();
30056 		}
30057 		property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30058 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
30059 
30060 		if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
30061 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
30062 		}
30063 
30064 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30065 	} else {
30066 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30067 	}
30068 }
30069 
30070 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30071 {
30072 	USE_OPLINE
30073 	zend_free_op free_op1;
30074 	zval *container, *property;
30075 
30076 	SAVE_OPLINE();
30077 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
30078 
30079 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
30080 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30081 	}
30082 
30083 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30084 
30085 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
30086 
30087 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
30088 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
30089 	}
30090 
30091 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30092 }
30093 
30094 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30095 {
30096 	USE_OPLINE
30097 
30098 	zval *object, *property, *value, tmp;
30099 
30100 	SAVE_OPLINE();
30101 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
30102 
30103 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30104 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30105 	}
30106 
30107 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30108 	value = EX_CONSTANT((opline+1)->op1);
30109 
30110 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30111 		do {
30112 			if (Z_ISREF_P(object)) {
30113 				object = Z_REFVAL_P(object);
30114 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30115 					break;
30116 				}
30117 			}
30118 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
30119 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
30120 				zend_object *obj;
30121 
30122 				zval_ptr_dtor(object);
30123 				object_init(object);
30124 				Z_ADDREF_P(object);
30125 				obj = Z_OBJ_P(object);
30126 				zend_error(E_WARNING, "Creating default object from empty value");
30127 				if (GC_REFCOUNT(obj) == 1) {
30128 					/* the enclosing container was deleted, obj is unreferenced */
30129 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30130 						ZVAL_NULL(EX_VAR(opline->result.var));
30131 					}
30132 
30133 					OBJ_RELEASE(obj);
30134 					goto exit_assign_obj;
30135 				}
30136 				Z_DELREF_P(object);
30137 			} else {
30138 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
30139 					zend_string *property_name = zval_get_string(property);
30140 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30141 					zend_string_release(property_name);
30142 				}
30143 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30144 					ZVAL_NULL(EX_VAR(opline->result.var));
30145 				}
30146 
30147 				goto exit_assign_obj;
30148 			}
30149 		} while (0);
30150 	}
30151 
30152 	if (IS_CV == IS_CONST &&
30153 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
30154 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
30155 		zend_object *zobj = Z_OBJ_P(object);
30156 		zval *property_val;
30157 
30158 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
30159 			property_val = OBJ_PROP(zobj, prop_offset);
30160 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
30161 fast_assign_obj:
30162 				value = zend_assign_to_variable(property_val, value, IS_CONST);
30163 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30164 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30165 				}
30166 				goto exit_assign_obj;
30167 			}
30168 		} else {
30169 			if (EXPECTED(zobj->properties != NULL)) {
30170 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
30171 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
30172 						GC_REFCOUNT(zobj->properties)--;
30173 					}
30174 					zobj->properties = zend_array_dup(zobj->properties);
30175 				}
30176 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
30177 				if (property_val) {
30178 					goto fast_assign_obj;
30179 				}
30180 			}
30181 
30182 			if (!zobj->ce->__set) {
30183 
30184 				if (EXPECTED(zobj->properties == NULL)) {
30185 					rebuild_object_properties(zobj);
30186 				}
30187 				if (IS_CONST == IS_CONST) {
30188 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
30189 						Z_ADDREF_P(value);
30190 					}
30191 				} else if (IS_CONST != IS_TMP_VAR) {
30192 					if (Z_ISREF_P(value)) {
30193 						if (IS_CONST == IS_VAR) {
30194 							zend_reference *ref = Z_REF_P(value);
30195 							if (--GC_REFCOUNT(ref) == 0) {
30196 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
30197 								efree_size(ref, sizeof(zend_reference));
30198 								value = &tmp;
30199 							} else {
30200 								value = Z_REFVAL_P(value);
30201 								if (Z_REFCOUNTED_P(value)) {
30202 									Z_ADDREF_P(value);
30203 								}
30204 							}
30205 						} else {
30206 							value = Z_REFVAL_P(value);
30207 							if (Z_REFCOUNTED_P(value)) {
30208 								Z_ADDREF_P(value);
30209 							}
30210 						}
30211 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
30212 						Z_ADDREF_P(value);
30213 					}
30214 				}
30215 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
30216 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30217 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30218 				}
30219 				goto exit_assign_obj;
30220 			}
30221 		}
30222 	}
30223 
30224 	if (!Z_OBJ_HT_P(object)->write_property) {
30225 		zend_string *property_name = zval_get_string(property);
30226 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30227 		zend_string_release(property_name);
30228 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30229 			ZVAL_NULL(EX_VAR(opline->result.var));
30230 		}
30231 
30232 		goto exit_assign_obj;
30233 	}
30234 
30235 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
30236 		ZVAL_DEREF(value);
30237 	}
30238 
30239 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
30240 
30241 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30242 		ZVAL_COPY(EX_VAR(opline->result.var), value);
30243 	}
30244 
30245 exit_assign_obj:
30246 
30247 
30248 	/* assign_obj has two opcodes! */
30249 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
30250 }
30251 
30252 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30253 {
30254 	USE_OPLINE
30255 	zend_free_op free_op_data;
30256 	zval *object, *property, *value, tmp;
30257 
30258 	SAVE_OPLINE();
30259 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
30260 
30261 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30262 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30263 	}
30264 
30265 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30266 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
30267 
30268 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30269 		do {
30270 			if (Z_ISREF_P(object)) {
30271 				object = Z_REFVAL_P(object);
30272 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30273 					break;
30274 				}
30275 			}
30276 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
30277 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
30278 				zend_object *obj;
30279 
30280 				zval_ptr_dtor(object);
30281 				object_init(object);
30282 				Z_ADDREF_P(object);
30283 				obj = Z_OBJ_P(object);
30284 				zend_error(E_WARNING, "Creating default object from empty value");
30285 				if (GC_REFCOUNT(obj) == 1) {
30286 					/* the enclosing container was deleted, obj is unreferenced */
30287 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30288 						ZVAL_NULL(EX_VAR(opline->result.var));
30289 					}
30290 					zval_ptr_dtor_nogc(free_op_data);
30291 					OBJ_RELEASE(obj);
30292 					goto exit_assign_obj;
30293 				}
30294 				Z_DELREF_P(object);
30295 			} else {
30296 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
30297 					zend_string *property_name = zval_get_string(property);
30298 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30299 					zend_string_release(property_name);
30300 				}
30301 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30302 					ZVAL_NULL(EX_VAR(opline->result.var));
30303 				}
30304 				zval_ptr_dtor_nogc(free_op_data);
30305 				goto exit_assign_obj;
30306 			}
30307 		} while (0);
30308 	}
30309 
30310 	if (IS_CV == IS_CONST &&
30311 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
30312 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
30313 		zend_object *zobj = Z_OBJ_P(object);
30314 		zval *property_val;
30315 
30316 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
30317 			property_val = OBJ_PROP(zobj, prop_offset);
30318 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
30319 fast_assign_obj:
30320 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
30321 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30322 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30323 				}
30324 				goto exit_assign_obj;
30325 			}
30326 		} else {
30327 			if (EXPECTED(zobj->properties != NULL)) {
30328 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
30329 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
30330 						GC_REFCOUNT(zobj->properties)--;
30331 					}
30332 					zobj->properties = zend_array_dup(zobj->properties);
30333 				}
30334 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
30335 				if (property_val) {
30336 					goto fast_assign_obj;
30337 				}
30338 			}
30339 
30340 			if (!zobj->ce->__set) {
30341 
30342 				if (EXPECTED(zobj->properties == NULL)) {
30343 					rebuild_object_properties(zobj);
30344 				}
30345 				if (IS_TMP_VAR == IS_CONST) {
30346 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
30347 						Z_ADDREF_P(value);
30348 					}
30349 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
30350 					if (Z_ISREF_P(value)) {
30351 						if (IS_TMP_VAR == IS_VAR) {
30352 							zend_reference *ref = Z_REF_P(value);
30353 							if (--GC_REFCOUNT(ref) == 0) {
30354 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
30355 								efree_size(ref, sizeof(zend_reference));
30356 								value = &tmp;
30357 							} else {
30358 								value = Z_REFVAL_P(value);
30359 								if (Z_REFCOUNTED_P(value)) {
30360 									Z_ADDREF_P(value);
30361 								}
30362 							}
30363 						} else {
30364 							value = Z_REFVAL_P(value);
30365 							if (Z_REFCOUNTED_P(value)) {
30366 								Z_ADDREF_P(value);
30367 							}
30368 						}
30369 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
30370 						Z_ADDREF_P(value);
30371 					}
30372 				}
30373 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
30374 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30375 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30376 				}
30377 				goto exit_assign_obj;
30378 			}
30379 		}
30380 	}
30381 
30382 	if (!Z_OBJ_HT_P(object)->write_property) {
30383 		zend_string *property_name = zval_get_string(property);
30384 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30385 		zend_string_release(property_name);
30386 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30387 			ZVAL_NULL(EX_VAR(opline->result.var));
30388 		}
30389 		zval_ptr_dtor_nogc(free_op_data);
30390 		goto exit_assign_obj;
30391 	}
30392 
30393 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
30394 		ZVAL_DEREF(value);
30395 	}
30396 
30397 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
30398 
30399 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30400 		ZVAL_COPY(EX_VAR(opline->result.var), value);
30401 	}
30402 	zval_ptr_dtor_nogc(free_op_data);
30403 exit_assign_obj:
30404 
30405 
30406 	/* assign_obj has two opcodes! */
30407 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
30408 }
30409 
30410 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30411 {
30412 	USE_OPLINE
30413 	zend_free_op free_op_data;
30414 	zval *object, *property, *value, tmp;
30415 
30416 	SAVE_OPLINE();
30417 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
30418 
30419 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30420 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30421 	}
30422 
30423 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30424 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
30425 
30426 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30427 		do {
30428 			if (Z_ISREF_P(object)) {
30429 				object = Z_REFVAL_P(object);
30430 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30431 					break;
30432 				}
30433 			}
30434 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
30435 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
30436 				zend_object *obj;
30437 
30438 				zval_ptr_dtor(object);
30439 				object_init(object);
30440 				Z_ADDREF_P(object);
30441 				obj = Z_OBJ_P(object);
30442 				zend_error(E_WARNING, "Creating default object from empty value");
30443 				if (GC_REFCOUNT(obj) == 1) {
30444 					/* the enclosing container was deleted, obj is unreferenced */
30445 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30446 						ZVAL_NULL(EX_VAR(opline->result.var));
30447 					}
30448 					zval_ptr_dtor_nogc(free_op_data);
30449 					OBJ_RELEASE(obj);
30450 					goto exit_assign_obj;
30451 				}
30452 				Z_DELREF_P(object);
30453 			} else {
30454 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
30455 					zend_string *property_name = zval_get_string(property);
30456 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30457 					zend_string_release(property_name);
30458 				}
30459 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30460 					ZVAL_NULL(EX_VAR(opline->result.var));
30461 				}
30462 				zval_ptr_dtor_nogc(free_op_data);
30463 				goto exit_assign_obj;
30464 			}
30465 		} while (0);
30466 	}
30467 
30468 	if (IS_CV == IS_CONST &&
30469 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
30470 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
30471 		zend_object *zobj = Z_OBJ_P(object);
30472 		zval *property_val;
30473 
30474 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
30475 			property_val = OBJ_PROP(zobj, prop_offset);
30476 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
30477 fast_assign_obj:
30478 				value = zend_assign_to_variable(property_val, value, IS_VAR);
30479 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30480 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30481 				}
30482 				goto exit_assign_obj;
30483 			}
30484 		} else {
30485 			if (EXPECTED(zobj->properties != NULL)) {
30486 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
30487 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
30488 						GC_REFCOUNT(zobj->properties)--;
30489 					}
30490 					zobj->properties = zend_array_dup(zobj->properties);
30491 				}
30492 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
30493 				if (property_val) {
30494 					goto fast_assign_obj;
30495 				}
30496 			}
30497 
30498 			if (!zobj->ce->__set) {
30499 
30500 				if (EXPECTED(zobj->properties == NULL)) {
30501 					rebuild_object_properties(zobj);
30502 				}
30503 				if (IS_VAR == IS_CONST) {
30504 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
30505 						Z_ADDREF_P(value);
30506 					}
30507 				} else if (IS_VAR != IS_TMP_VAR) {
30508 					if (Z_ISREF_P(value)) {
30509 						if (IS_VAR == IS_VAR) {
30510 							zend_reference *ref = Z_REF_P(value);
30511 							if (--GC_REFCOUNT(ref) == 0) {
30512 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
30513 								efree_size(ref, sizeof(zend_reference));
30514 								value = &tmp;
30515 							} else {
30516 								value = Z_REFVAL_P(value);
30517 								if (Z_REFCOUNTED_P(value)) {
30518 									Z_ADDREF_P(value);
30519 								}
30520 							}
30521 						} else {
30522 							value = Z_REFVAL_P(value);
30523 							if (Z_REFCOUNTED_P(value)) {
30524 								Z_ADDREF_P(value);
30525 							}
30526 						}
30527 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
30528 						Z_ADDREF_P(value);
30529 					}
30530 				}
30531 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
30532 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30533 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30534 				}
30535 				goto exit_assign_obj;
30536 			}
30537 		}
30538 	}
30539 
30540 	if (!Z_OBJ_HT_P(object)->write_property) {
30541 		zend_string *property_name = zval_get_string(property);
30542 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30543 		zend_string_release(property_name);
30544 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30545 			ZVAL_NULL(EX_VAR(opline->result.var));
30546 		}
30547 		zval_ptr_dtor_nogc(free_op_data);
30548 		goto exit_assign_obj;
30549 	}
30550 
30551 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
30552 		ZVAL_DEREF(value);
30553 	}
30554 
30555 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
30556 
30557 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30558 		ZVAL_COPY(EX_VAR(opline->result.var), value);
30559 	}
30560 	zval_ptr_dtor_nogc(free_op_data);
30561 exit_assign_obj:
30562 
30563 
30564 	/* assign_obj has two opcodes! */
30565 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
30566 }
30567 
30568 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30569 {
30570 	USE_OPLINE
30571 
30572 	zval *object, *property, *value, tmp;
30573 
30574 	SAVE_OPLINE();
30575 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
30576 
30577 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30578 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30579 	}
30580 
30581 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30582 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
30583 
30584 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30585 		do {
30586 			if (Z_ISREF_P(object)) {
30587 				object = Z_REFVAL_P(object);
30588 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30589 					break;
30590 				}
30591 			}
30592 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
30593 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
30594 				zend_object *obj;
30595 
30596 				zval_ptr_dtor(object);
30597 				object_init(object);
30598 				Z_ADDREF_P(object);
30599 				obj = Z_OBJ_P(object);
30600 				zend_error(E_WARNING, "Creating default object from empty value");
30601 				if (GC_REFCOUNT(obj) == 1) {
30602 					/* the enclosing container was deleted, obj is unreferenced */
30603 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30604 						ZVAL_NULL(EX_VAR(opline->result.var));
30605 					}
30606 
30607 					OBJ_RELEASE(obj);
30608 					goto exit_assign_obj;
30609 				}
30610 				Z_DELREF_P(object);
30611 			} else {
30612 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
30613 					zend_string *property_name = zval_get_string(property);
30614 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30615 					zend_string_release(property_name);
30616 				}
30617 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30618 					ZVAL_NULL(EX_VAR(opline->result.var));
30619 				}
30620 
30621 				goto exit_assign_obj;
30622 			}
30623 		} while (0);
30624 	}
30625 
30626 	if (IS_CV == IS_CONST &&
30627 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
30628 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
30629 		zend_object *zobj = Z_OBJ_P(object);
30630 		zval *property_val;
30631 
30632 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
30633 			property_val = OBJ_PROP(zobj, prop_offset);
30634 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
30635 fast_assign_obj:
30636 				value = zend_assign_to_variable(property_val, value, IS_CV);
30637 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30638 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30639 				}
30640 				goto exit_assign_obj;
30641 			}
30642 		} else {
30643 			if (EXPECTED(zobj->properties != NULL)) {
30644 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
30645 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
30646 						GC_REFCOUNT(zobj->properties)--;
30647 					}
30648 					zobj->properties = zend_array_dup(zobj->properties);
30649 				}
30650 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
30651 				if (property_val) {
30652 					goto fast_assign_obj;
30653 				}
30654 			}
30655 
30656 			if (!zobj->ce->__set) {
30657 
30658 				if (EXPECTED(zobj->properties == NULL)) {
30659 					rebuild_object_properties(zobj);
30660 				}
30661 				if (IS_CV == IS_CONST) {
30662 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
30663 						Z_ADDREF_P(value);
30664 					}
30665 				} else if (IS_CV != IS_TMP_VAR) {
30666 					if (Z_ISREF_P(value)) {
30667 						if (IS_CV == IS_VAR) {
30668 							zend_reference *ref = Z_REF_P(value);
30669 							if (--GC_REFCOUNT(ref) == 0) {
30670 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
30671 								efree_size(ref, sizeof(zend_reference));
30672 								value = &tmp;
30673 							} else {
30674 								value = Z_REFVAL_P(value);
30675 								if (Z_REFCOUNTED_P(value)) {
30676 									Z_ADDREF_P(value);
30677 								}
30678 							}
30679 						} else {
30680 							value = Z_REFVAL_P(value);
30681 							if (Z_REFCOUNTED_P(value)) {
30682 								Z_ADDREF_P(value);
30683 							}
30684 						}
30685 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
30686 						Z_ADDREF_P(value);
30687 					}
30688 				}
30689 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
30690 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30691 					ZVAL_COPY(EX_VAR(opline->result.var), value);
30692 				}
30693 				goto exit_assign_obj;
30694 			}
30695 		}
30696 	}
30697 
30698 	if (!Z_OBJ_HT_P(object)->write_property) {
30699 		zend_string *property_name = zval_get_string(property);
30700 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
30701 		zend_string_release(property_name);
30702 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30703 			ZVAL_NULL(EX_VAR(opline->result.var));
30704 		}
30705 
30706 		goto exit_assign_obj;
30707 	}
30708 
30709 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
30710 		ZVAL_DEREF(value);
30711 	}
30712 
30713 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
30714 
30715 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
30716 		ZVAL_COPY(EX_VAR(opline->result.var), value);
30717 	}
30718 
30719 exit_assign_obj:
30720 
30721 
30722 	/* assign_obj has two opcodes! */
30723 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
30724 }
30725 
30726 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30727 {
30728 	USE_OPLINE
30729 
30730 	zend_string **rope;
30731 	zval *var;
30732 
30733 	/* Compiler allocates the necessary number of zval slots to keep the rope */
30734 	rope = (zend_string**)EX_VAR(opline->result.var);
30735 	if (IS_CV == IS_CONST) {
30736 		var = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
30737 		rope[0] = zend_string_copy(Z_STR_P(var));
30738 	} else {
30739 		var = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
30740 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
30741 			if (IS_CV == IS_CV) {
30742 				rope[0] = zend_string_copy(Z_STR_P(var));
30743 			} else {
30744 				rope[0] = Z_STR_P(var);
30745 			}
30746 		} else {
30747 			SAVE_OPLINE();
30748 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
30749 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
30750 			}
30751 			rope[0] = _zval_get_string_func(var);
30752 
30753 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
30754 		}
30755 	}
30756 	ZEND_VM_NEXT_OPCODE();
30757 }
30758 
30759 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30760 {
30761 	USE_OPLINE
30762 	zval *function_name;
30763 
30764 	zval *object;
30765 	zend_function *fbc;
30766 	zend_class_entry *called_scope;
30767 	zend_object *obj;
30768 	zend_execute_data *call;
30769 	uint32_t call_info;
30770 
30771 	SAVE_OPLINE();
30772 
30773 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
30774 
30775 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30776 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
30777 	}
30778 
30779 	function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
30780 
30781 	if (IS_CV != IS_CONST &&
30782 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
30783 		do {
30784 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
30785 				function_name = Z_REFVAL_P(function_name);
30786 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
30787 					break;
30788 				}
30789 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
30790 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
30791 				if (UNEXPECTED(EG(exception) != NULL)) {
30792 
30793 					HANDLE_EXCEPTION();
30794 				}
30795 			}
30796 			zend_throw_error(NULL, "Method name must be a string");
30797 
30798 
30799 			HANDLE_EXCEPTION();
30800 		} while (0);
30801 	}
30802 
30803 	if (IS_UNUSED != IS_UNUSED) {
30804 		do {
30805 			if (IS_UNUSED == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
30806 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
30807 					object = Z_REFVAL_P(object);
30808 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
30809 						break;
30810 					}
30811 				}
30812 				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
30813 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
30814 					if (UNEXPECTED(EG(exception) != NULL)) {
30815 
30816 						HANDLE_EXCEPTION();
30817 					}
30818 				}
30819 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
30820 
30821 
30822 				HANDLE_EXCEPTION();
30823 			}
30824 		} while (0);
30825 	}
30826 
30827 	obj = Z_OBJ_P(object);
30828 	called_scope = obj->ce;
30829 
30830 	if (IS_CV == IS_CONST &&
30831 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
30832 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
30833 	} else {
30834 	    zend_object *orig_obj = obj;
30835 
30836 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
30837 			zend_throw_error(NULL, "Object does not support method calls");
30838 
30839 
30840 			HANDLE_EXCEPTION();
30841 		}
30842 
30843 		/* First, locate the function. */
30844 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
30845 		if (UNEXPECTED(fbc == NULL)) {
30846 			if (EXPECTED(!EG(exception))) {
30847 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
30848 			}
30849 
30850 
30851 			HANDLE_EXCEPTION();
30852 		}
30853 		if (IS_CV == IS_CONST &&
30854 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
30855 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
30856 		    EXPECTED(obj == orig_obj)) {
30857 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
30858 		}
30859 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
30860 			init_func_run_time_cache(&fbc->op_array);
30861 		}
30862 	}
30863 
30864 	call_info = ZEND_CALL_NESTED_FUNCTION;
30865 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
30866 		obj = NULL;
30867 	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
30868 		/* CV may be changed indirectly (e.g. when it's a reference) */
30869 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
30870 		GC_REFCOUNT(obj)++; /* For $this pointer */
30871 	}
30872 
30873 
30874 	if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
30875 		HANDLE_EXCEPTION();
30876 	}
30877 
30878 	call = zend_vm_stack_push_call_frame(call_info,
30879 		fbc, opline->extended_value, called_scope, obj);
30880 	call->prev_execute_data = EX(call);
30881 	EX(call) = call;
30882 
30883 	ZEND_VM_NEXT_OPCODE();
30884 }
30885 
30886 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
30887 {
30888 	USE_OPLINE
30889 	zval *function_name;
30890 	zend_class_entry *ce;
30891 	zend_object *object;
30892 	zend_function *fbc;
30893 	zend_execute_data *call;
30894 
30895 	SAVE_OPLINE();
30896 
30897 	if (IS_UNUSED == IS_CONST) {
30898 		/* no function found. try a static method in class */
30899 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
30900 		if (UNEXPECTED(ce == NULL)) {
30901 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
30902 			if (UNEXPECTED(ce == NULL)) {
30903 				ZEND_ASSERT(EG(exception));
30904 
30905 				HANDLE_EXCEPTION();
30906 			}
30907 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
30908 		}
30909 	} else if (IS_UNUSED == IS_UNUSED) {
30910 		ce = zend_fetch_class(NULL, opline->op1.num);
30911 		if (UNEXPECTED(ce == NULL)) {
30912 			ZEND_ASSERT(EG(exception));
30913 
30914 			HANDLE_EXCEPTION();
30915 		}
30916 	} else {
30917 		ce = Z_CE_P(EX_VAR(opline->op1.var));
30918 	}
30919 
30920 	if (IS_UNUSED == IS_CONST &&
30921 	    IS_CV == IS_CONST &&
30922 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
30923 		/* nothing to do */
30924 	} else if (IS_UNUSED != IS_CONST &&
30925 	           IS_CV == IS_CONST &&
30926 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
30927 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
30928 	} else if (IS_CV != IS_UNUSED) {
30929 
30930 
30931 		function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
30932 		if (IS_CV != IS_CONST) {
30933 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
30934 				do {
30935 					if (IS_CV & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
30936 						function_name = Z_REFVAL_P(function_name);
30937 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
30938 							break;
30939 						}
30940 					} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
30941 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
30942 						if (UNEXPECTED(EG(exception) != NULL)) {
30943 							HANDLE_EXCEPTION();
30944 						}
30945 					}
30946 					zend_throw_error(NULL, "Function name must be a string");
30947 
30948 					HANDLE_EXCEPTION();
30949 				} while (0);
30950  			}
30951 		}
30952 
30953 		if (ce->get_static_method) {
30954 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
30955 		} else {
30956 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
30957 		}
30958 		if (UNEXPECTED(fbc == NULL)) {
30959 			if (EXPECTED(!EG(exception))) {
30960 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
30961 			}
30962 
30963 			HANDLE_EXCEPTION();
30964 		}
30965 		if (IS_CV == IS_CONST &&
30966 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
30967 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
30968 			if (IS_UNUSED == IS_CONST) {
30969 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
30970 			} else {
30971 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
30972 			}
30973 		}
30974 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
30975 			init_func_run_time_cache(&fbc->op_array);
30976 		}
30977 		if (IS_CV != IS_CONST) {
30978 
30979 		}
30980 	} else {
30981 		if (UNEXPECTED(ce->constructor == NULL)) {
30982 			zend_throw_error(NULL, "Cannot call constructor");
30983 			HANDLE_EXCEPTION();
30984 		}
30985 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
30986 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
30987 			HANDLE_EXCEPTION();
30988 		}
30989 		fbc = ce->constructor;
30990 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
30991 			init_func_run_time_cache(&fbc->op_array);
30992 		}
30993 	}
30994 
30995 	object = NULL;
30996 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
30997 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
30998 			object = Z_OBJ(EX(This));
30999 			ce = object->ce;
31000 		} else {
31001 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
31002 				/* Allowed for PHP 4 compatibility. */
31003 				zend_error(
31004 					E_DEPRECATED,
31005 					"Non-static method %s::%s() should not be called statically",
31006 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
31007 				if (UNEXPECTED(EG(exception) != NULL)) {
31008 					HANDLE_EXCEPTION();
31009 				}
31010 			} else {
31011 				/* An internal function assumes $this is present and won't check that.
31012 				 * So PHP would crash by allowing the call. */
31013 				zend_throw_error(
31014 					zend_ce_error,
31015 					"Non-static method %s::%s() cannot be called statically",
31016 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
31017 				HANDLE_EXCEPTION();
31018 			}
31019 		}
31020 	}
31021 
31022 	if (IS_UNUSED == IS_UNUSED) {
31023 		/* previous opcode is ZEND_FETCH_CLASS */
31024 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
31025 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
31026 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
31027 				ce = Z_OBJCE(EX(This));
31028 			} else {
31029 				ce = Z_CE(EX(This));
31030 			}
31031 		}
31032 	}
31033 
31034 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
31035 		fbc, opline->extended_value, ce, object);
31036 	call->prev_execute_data = EX(call);
31037 	EX(call) = call;
31038 
31039 	ZEND_VM_NEXT_OPCODE();
31040 }
31041 
31042 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31043 {
31044 	USE_OPLINE
31045 
31046 	zval *container;
31047 	zval *offset;
31048 
31049 	SAVE_OPLINE();
31050 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31051 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31052 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31053 	}
31054 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
31055 
31056 	do {
31057 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
31058 			if (Z_ISREF_P(container)) {
31059 				container = Z_REFVAL_P(container);
31060 				if (Z_TYPE_P(container) != IS_OBJECT) {
31061 					break;
31062 				}
31063 			} else {
31064 				break;
31065 			}
31066 		}
31067 		if (Z_OBJ_HT_P(container)->unset_property) {
31068 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
31069 		} else {
31070 			zend_string *property_name = zval_get_string(offset);
31071 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
31072 			zend_string_release(property_name);
31073 		}
31074 	} while (0);
31075 
31076 
31077 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31078 }
31079 
31080 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31081 {
31082 	USE_OPLINE
31083 
31084 	zval *container;
31085 	int result;
31086 	zval *offset;
31087 
31088 	SAVE_OPLINE();
31089 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31090 
31091 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31092 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31093 	}
31094 
31095 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
31096 
31097 	if (IS_UNUSED == IS_CONST ||
31098 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
31099 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
31100 			container = Z_REFVAL_P(container);
31101 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
31102 				goto isset_no_object;
31103 			}
31104 		} else {
31105 			goto isset_no_object;
31106 		}
31107 	}
31108 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
31109 		zend_string *property_name = zval_get_string(offset);
31110 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
31111 		zend_string_release(property_name);
31112 isset_no_object:
31113 		result = ((opline->extended_value & ZEND_ISSET) == 0);
31114 	} else {
31115 		result =
31116 			((opline->extended_value & ZEND_ISSET) == 0) ^
31117 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
31118 	}
31119 
31120 
31121 	ZEND_VM_SMART_BRANCH(result, 1);
31122 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
31123 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31124 }
31125 
31126 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31127 {
31128 	USE_OPLINE
31129 
31130 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
31131 
31132 	SAVE_OPLINE();
31133 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
31134 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
31135 
31136 
31137 		UNDEF_RESULT();
31138 		HANDLE_EXCEPTION();
31139 	}
31140 
31141 	/* Destroy the previously yielded value */
31142 	zval_ptr_dtor(&generator->value);
31143 
31144 	/* Destroy the previously yielded key */
31145 	zval_ptr_dtor(&generator->key);
31146 
31147 	/* Set the new yielded value */
31148 	if (IS_UNUSED != IS_UNUSED) {
31149 
31150 
31151 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
31152 			/* Constants and temporary variables aren't yieldable by reference,
31153 			 * but we still allow them with a notice. */
31154 			if (IS_UNUSED & (IS_CONST|IS_TMP_VAR)) {
31155 				zval *value;
31156 
31157 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
31158 
31159 				value = NULL;
31160 				ZVAL_COPY_VALUE(&generator->value, value);
31161 				if (IS_UNUSED == IS_CONST) {
31162 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
31163 						Z_ADDREF(generator->value);
31164 					}
31165 				}
31166 			} else {
31167 				zval *value_ptr = NULL;
31168 
31169 				/* If a function call result is yielded and the function did
31170 				 * not return by reference we throw a notice. */
31171 				if (IS_UNUSED == IS_VAR &&
31172 				    (value_ptr == &EG(uninitialized_zval) ||
31173 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
31174 				      !Z_ISREF_P(value_ptr)))) {
31175 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
31176 				} else {
31177 					ZVAL_MAKE_REF(value_ptr);
31178 				}
31179 				ZVAL_COPY(&generator->value, value_ptr);
31180 
31181 			}
31182 		} else {
31183 			zval *value = NULL;
31184 
31185 			/* Consts, temporary variables and references need copying */
31186 			if (IS_UNUSED == IS_CONST) {
31187 				ZVAL_COPY_VALUE(&generator->value, value);
31188 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
31189 					Z_ADDREF(generator->value);
31190 				}
31191 			} else if (IS_UNUSED == IS_TMP_VAR) {
31192 				ZVAL_COPY_VALUE(&generator->value, value);
31193             } else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
31194 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
31195 
31196 			} else {
31197 				ZVAL_COPY_VALUE(&generator->value, value);
31198 				if (IS_UNUSED == IS_CV) {
31199 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
31200 				}
31201 			}
31202 		}
31203 	} else {
31204 		/* If no value was specified yield null */
31205 		ZVAL_NULL(&generator->value);
31206 	}
31207 
31208 	/* Set the new yielded key */
31209 	if (IS_CV != IS_UNUSED) {
31210 
31211 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
31212 
31213 		/* Consts, temporary variables and references need copying */
31214 		if (IS_CV == IS_CONST) {
31215 			ZVAL_COPY_VALUE(&generator->key, key);
31216 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
31217 				Z_ADDREF(generator->key);
31218 			}
31219 		} else if (IS_CV == IS_TMP_VAR) {
31220 			ZVAL_COPY_VALUE(&generator->key, key);
31221 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
31222 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
31223 
31224 		} else {
31225 			ZVAL_COPY_VALUE(&generator->key, key);
31226 			if (IS_CV == IS_CV) {
31227 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
31228 			}
31229 		}
31230 
31231 		if (Z_TYPE(generator->key) == IS_LONG
31232 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
31233 		) {
31234 			generator->largest_used_integer_key = Z_LVAL(generator->key);
31235 		}
31236 	} else {
31237 		/* If no key was specified we use auto-increment keys */
31238 		generator->largest_used_integer_key++;
31239 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
31240 	}
31241 
31242 	if (RETURN_VALUE_USED(opline)) {
31243 		/* If the return value of yield is used set the send
31244 		 * target and initialize it to NULL */
31245 		generator->send_target = EX_VAR(opline->result.var);
31246 		ZVAL_NULL(generator->send_target);
31247 	} else {
31248 		generator->send_target = NULL;
31249 	}
31250 
31251 	/* We increment to the next op, so we are at the correct position when the
31252 	 * generator is resumed. */
31253 	ZEND_VM_INC_OPCODE();
31254 
31255 	/* The GOTO VM uses a local opline variable. We need to set the opline
31256 	 * variable in execute_data so we don't resume at an old position. */
31257 	SAVE_OPLINE();
31258 
31259 	ZEND_VM_RETURN();
31260 }
31261 
31262 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
31263 {
31264 	USE_OPLINE
31265 	zend_free_op free_op2, free_op_data1;
31266 	zval *object;
31267 	zval *property;
31268 	zval *value;
31269 	zval *zptr;
31270 
31271 	SAVE_OPLINE();
31272 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31273 
31274 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31275 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31276 	}
31277 
31278 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31279 
31280 	do {
31281 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
31282 
31283 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31284 			ZVAL_DEREF(object);
31285 			if (UNEXPECTED(!make_real_object(object))) {
31286 				zend_string *property_name = zval_get_string(property);
31287 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
31288 				zend_string_release(property_name);
31289 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31290 					ZVAL_NULL(EX_VAR(opline->result.var));
31291 				}
31292 				break;
31293 			}
31294 		}
31295 
31296 		/* here we are sure we are dealing with an object */
31297 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
31298 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
31299 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
31300 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31301 					ZVAL_NULL(EX_VAR(opline->result.var));
31302 				}
31303 			} else {
31304 				ZVAL_DEREF(zptr);
31305 				SEPARATE_ZVAL_NOREF(zptr);
31306 
31307 				binary_op(zptr, zptr, value);
31308 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31309 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
31310 				}
31311 			}
31312 		} else {
31313 			zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
31314 		}
31315 	} while (0);
31316 
31317 	FREE_OP(free_op_data1);
31318 	zval_ptr_dtor_nogc(free_op2);
31319 
31320 	/* assign_obj has two opcodes! */
31321 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
31322 }
31323 
31324 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
31325 {
31326 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
31327 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31328 #else
31329 # if 0 || IS_UNUSED != IS_UNUSED
31330 	USE_OPLINE
31331 
31332 	if (EXPECTED(0)) {
31333 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31334 	}
31335 	if (EXPECTED(0)) {
31336 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31337 	}
31338 # endif
31339 
31340 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_UNUSED_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31341 #endif
31342 }
31343 
31344 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31345 {
31346 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31347 }
31348 
31349 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31350 {
31351 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31352 }
31353 
31354 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31355 {
31356 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31357 }
31358 
31359 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31360 {
31361 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31362 }
31363 
31364 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31365 {
31366 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31367 }
31368 
31369 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31370 {
31371 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31372 }
31373 
31374 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31375 {
31376 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31377 }
31378 
31379 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31380 {
31381 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31382 }
31383 
31384 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31385 {
31386 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31387 }
31388 
31389 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31390 {
31391 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31392 }
31393 
31394 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31395 {
31396 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31397 }
31398 
31399 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31400 {
31401 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_UNUSED_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31402 }
31403 
31404 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
31405 {
31406 	USE_OPLINE
31407 	zend_free_op free_op2;
31408 	zval *object;
31409 	zval *property;
31410 	zval *zptr;
31411 
31412 	SAVE_OPLINE();
31413 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31414 
31415 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31416 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31417 	}
31418 
31419 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31420 
31421 	do {
31422 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31423 			ZVAL_DEREF(object);
31424 			if (UNEXPECTED(!make_real_object(object))) {
31425 				zend_string *property_name = zval_get_string(property);
31426 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
31427 				zend_string_release(property_name);
31428 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31429 					ZVAL_NULL(EX_VAR(opline->result.var));
31430 				}
31431 				break;
31432 			}
31433 		}
31434 
31435 		/* here we are sure we are dealing with an object */
31436 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
31437 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
31438 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
31439 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31440 					ZVAL_NULL(EX_VAR(opline->result.var));
31441 				}
31442 			} else {
31443 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
31444 					if (inc) {
31445 						fast_long_increment_function(zptr);
31446 					} else {
31447 						fast_long_decrement_function(zptr);
31448 					}
31449 				} else {
31450 					ZVAL_DEREF(zptr);
31451 					SEPARATE_ZVAL_NOREF(zptr);
31452 
31453 					if (inc) {
31454 						increment_function(zptr);
31455 					} else {
31456 						decrement_function(zptr);
31457 					}
31458 				}
31459 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31460 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
31461 				}
31462 			}
31463 		} else {
31464 			zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
31465 		}
31466 	} while (0);
31467 
31468 	zval_ptr_dtor_nogc(free_op2);
31469 
31470 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31471 }
31472 
31473 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31474 {
31475 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31476 }
31477 
31478 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31479 {
31480 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_UNUSED_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31481 }
31482 
31483 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
31484 {
31485 	USE_OPLINE
31486 	zend_free_op free_op2;
31487 	zval *object;
31488 	zval *property;
31489 	zval *zptr;
31490 
31491 	SAVE_OPLINE();
31492 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31493 
31494 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31495 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31496 	}
31497 
31498 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31499 
31500 	do {
31501 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31502 			ZVAL_DEREF(object);
31503 			if (UNEXPECTED(!make_real_object(object))) {
31504 				zend_string *property_name = zval_get_string(property);
31505 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
31506 				zend_string_release(property_name);
31507 				ZVAL_NULL(EX_VAR(opline->result.var));
31508 				break;
31509 			}
31510 		}
31511 
31512 		/* here we are sure we are dealing with an object */
31513 
31514 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
31515 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
31516 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
31517 				ZVAL_NULL(EX_VAR(opline->result.var));
31518 			} else {
31519 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
31520 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
31521 					if (inc) {
31522 						fast_long_increment_function(zptr);
31523 					} else {
31524 						fast_long_decrement_function(zptr);
31525 					}
31526 				} else {
31527 					ZVAL_DEREF(zptr);
31528 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
31529 					zval_opt_copy_ctor(zptr);
31530 					if (inc) {
31531 						increment_function(zptr);
31532 					} else {
31533 						decrement_function(zptr);
31534 					}
31535 				}
31536 			}
31537 		} else {
31538 			zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
31539 		}
31540 	} while (0);
31541 
31542 	zval_ptr_dtor_nogc(free_op2);
31543 
31544 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31545 }
31546 
31547 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31548 {
31549 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31550 }
31551 
31552 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31553 {
31554 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_UNUSED_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
31555 }
31556 
31557 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31558 {
31559 	USE_OPLINE
31560 
31561 	zval *container;
31562 	zend_free_op free_op2;
31563 	zval *offset;
31564 
31565 	SAVE_OPLINE();
31566 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31567 
31568 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31569 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31570 	}
31571 
31572 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31573 
31574 	if (IS_UNUSED == IS_CONST ||
31575 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
31576 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
31577 			container = Z_REFVAL_P(container);
31578 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
31579 				goto fetch_obj_r_no_object;
31580 			}
31581 		} else {
31582 			goto fetch_obj_r_no_object;
31583 		}
31584 	}
31585 
31586 	/* here we are sure we are dealing with an object */
31587 	do {
31588 		zend_object *zobj = Z_OBJ_P(container);
31589 		zval *retval;
31590 
31591 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
31592 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
31593 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
31594 
31595 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
31596 				retval = OBJ_PROP(zobj, prop_offset);
31597 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
31598 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
31599 					break;
31600 				}
31601 			} else if (EXPECTED(zobj->properties != NULL)) {
31602 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
31603 				if (EXPECTED(retval)) {
31604 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
31605 					break;
31606 				}
31607 			}
31608 		}
31609 
31610 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
31611 			zend_string *property_name;
31612 fetch_obj_r_no_object:
31613 			property_name = zval_get_string(offset);
31614 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
31615 			zend_string_release(property_name);
31616 			ZVAL_NULL(EX_VAR(opline->result.var));
31617 		} else {
31618 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
31619 
31620 			if (retval != EX_VAR(opline->result.var)) {
31621 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
31622 			}
31623 		}
31624 	} while (0);
31625 
31626 	zval_ptr_dtor_nogc(free_op2);
31627 
31628 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31629 }
31630 
31631 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31632 {
31633 	USE_OPLINE
31634 	zend_free_op free_op1, free_op2;
31635 	zval *property;
31636 	zval *container;
31637 
31638 	SAVE_OPLINE();
31639 
31640 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31641 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31642 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31643 	}
31644 
31645 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31646 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
31647 	zval_ptr_dtor_nogc(free_op2);
31648 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
31649 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
31650 	}
31651 
31652 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31653 }
31654 
31655 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31656 {
31657 	USE_OPLINE
31658 	zend_free_op free_op1, free_op2;
31659 	zval *property;
31660 	zval *container;
31661 
31662 	SAVE_OPLINE();
31663 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31664 
31665 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31666 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31667 	}
31668 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31669 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
31670 	zval_ptr_dtor_nogc(free_op2);
31671 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
31672 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
31673 	}
31674 
31675 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31676 }
31677 
31678 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31679 {
31680 	USE_OPLINE
31681 
31682 	zval *container;
31683 	zend_free_op free_op2;
31684 	zval *offset;
31685 
31686 	SAVE_OPLINE();
31687 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31688 
31689 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31690 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31691 	}
31692 
31693 	offset  = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31694 
31695 	if (IS_UNUSED == IS_CONST ||
31696 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
31697 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
31698 			container = Z_REFVAL_P(container);
31699 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
31700 				goto fetch_obj_is_no_object;
31701 			}
31702 		} else {
31703 			goto fetch_obj_is_no_object;
31704 		}
31705 	}
31706 
31707 	/* here we are sure we are dealing with an object */
31708 	do {
31709 		zend_object *zobj = Z_OBJ_P(container);
31710 		zval *retval;
31711 
31712 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
31713 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
31714 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
31715 
31716 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
31717 				retval = OBJ_PROP(zobj, prop_offset);
31718 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
31719 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
31720 					break;
31721 				}
31722 			} else if (EXPECTED(zobj->properties != NULL)) {
31723 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
31724 				if (EXPECTED(retval)) {
31725 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
31726 					break;
31727 				}
31728 			}
31729 		}
31730 
31731 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
31732 fetch_obj_is_no_object:
31733 			ZVAL_NULL(EX_VAR(opline->result.var));
31734 		} else {
31735 
31736 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
31737 
31738 			if (retval != EX_VAR(opline->result.var)) {
31739 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
31740 			}
31741 		}
31742 	} while (0);
31743 
31744 	zval_ptr_dtor_nogc(free_op2);
31745 
31746 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31747 }
31748 
31749 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31750 {
31751 	USE_OPLINE
31752 	zval *container;
31753 
31754 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
31755 		/* Behave like FETCH_OBJ_W */
31756 		zend_free_op free_op1, free_op2;
31757 		zval *property;
31758 
31759 		SAVE_OPLINE();
31760 		container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31761 
31762 		if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31763 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31764 		}
31765 		if ((IS_UNUSED & (IS_CONST|IS_TMP_VAR))) {
31766 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
31767 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
31768 
31769 			ZVAL_UNDEF(EX_VAR(opline->result.var));
31770 			HANDLE_EXCEPTION();
31771 		}
31772 		property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31773 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
31774 		zval_ptr_dtor_nogc(free_op2);
31775 		if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
31776 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
31777 		}
31778 
31779 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31780 	} else {
31781 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31782 	}
31783 }
31784 
31785 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31786 {
31787 	USE_OPLINE
31788 	zend_free_op free_op1, free_op2;
31789 	zval *container, *property;
31790 
31791 	SAVE_OPLINE();
31792 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31793 
31794 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
31795 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31796 	}
31797 
31798 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31799 
31800 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_UNUSED, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
31801 	zval_ptr_dtor_nogc(free_op2);
31802 	if (IS_UNUSED == IS_VAR && READY_TO_DESTROY(free_op1)) {
31803 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
31804 	}
31805 
31806 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
31807 }
31808 
31809 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31810 {
31811 	USE_OPLINE
31812 	zend_free_op free_op2;
31813 	zval *object, *property, *value, tmp;
31814 
31815 	SAVE_OPLINE();
31816 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31817 
31818 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31819 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31820 	}
31821 
31822 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31823 	value = EX_CONSTANT((opline+1)->op1);
31824 
31825 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31826 		do {
31827 			if (Z_ISREF_P(object)) {
31828 				object = Z_REFVAL_P(object);
31829 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
31830 					break;
31831 				}
31832 			}
31833 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
31834 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
31835 				zend_object *obj;
31836 
31837 				zval_ptr_dtor(object);
31838 				object_init(object);
31839 				Z_ADDREF_P(object);
31840 				obj = Z_OBJ_P(object);
31841 				zend_error(E_WARNING, "Creating default object from empty value");
31842 				if (GC_REFCOUNT(obj) == 1) {
31843 					/* the enclosing container was deleted, obj is unreferenced */
31844 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31845 						ZVAL_NULL(EX_VAR(opline->result.var));
31846 					}
31847 
31848 					OBJ_RELEASE(obj);
31849 					goto exit_assign_obj;
31850 				}
31851 				Z_DELREF_P(object);
31852 			} else {
31853 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
31854 					zend_string *property_name = zval_get_string(property);
31855 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
31856 					zend_string_release(property_name);
31857 				}
31858 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31859 					ZVAL_NULL(EX_VAR(opline->result.var));
31860 				}
31861 
31862 				goto exit_assign_obj;
31863 			}
31864 		} while (0);
31865 	}
31866 
31867 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
31868 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
31869 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
31870 		zend_object *zobj = Z_OBJ_P(object);
31871 		zval *property_val;
31872 
31873 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
31874 			property_val = OBJ_PROP(zobj, prop_offset);
31875 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
31876 fast_assign_obj:
31877 				value = zend_assign_to_variable(property_val, value, IS_CONST);
31878 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31879 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31880 				}
31881 				goto exit_assign_obj;
31882 			}
31883 		} else {
31884 			if (EXPECTED(zobj->properties != NULL)) {
31885 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
31886 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
31887 						GC_REFCOUNT(zobj->properties)--;
31888 					}
31889 					zobj->properties = zend_array_dup(zobj->properties);
31890 				}
31891 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
31892 				if (property_val) {
31893 					goto fast_assign_obj;
31894 				}
31895 			}
31896 
31897 			if (!zobj->ce->__set) {
31898 
31899 				if (EXPECTED(zobj->properties == NULL)) {
31900 					rebuild_object_properties(zobj);
31901 				}
31902 				if (IS_CONST == IS_CONST) {
31903 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
31904 						Z_ADDREF_P(value);
31905 					}
31906 				} else if (IS_CONST != IS_TMP_VAR) {
31907 					if (Z_ISREF_P(value)) {
31908 						if (IS_CONST == IS_VAR) {
31909 							zend_reference *ref = Z_REF_P(value);
31910 							if (--GC_REFCOUNT(ref) == 0) {
31911 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
31912 								efree_size(ref, sizeof(zend_reference));
31913 								value = &tmp;
31914 							} else {
31915 								value = Z_REFVAL_P(value);
31916 								if (Z_REFCOUNTED_P(value)) {
31917 									Z_ADDREF_P(value);
31918 								}
31919 							}
31920 						} else {
31921 							value = Z_REFVAL_P(value);
31922 							if (Z_REFCOUNTED_P(value)) {
31923 								Z_ADDREF_P(value);
31924 							}
31925 						}
31926 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
31927 						Z_ADDREF_P(value);
31928 					}
31929 				}
31930 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
31931 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31932 					ZVAL_COPY(EX_VAR(opline->result.var), value);
31933 				}
31934 				goto exit_assign_obj;
31935 			}
31936 		}
31937 	}
31938 
31939 	if (!Z_OBJ_HT_P(object)->write_property) {
31940 		zend_string *property_name = zval_get_string(property);
31941 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
31942 		zend_string_release(property_name);
31943 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31944 			ZVAL_NULL(EX_VAR(opline->result.var));
31945 		}
31946 
31947 		goto exit_assign_obj;
31948 	}
31949 
31950 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
31951 		ZVAL_DEREF(value);
31952 	}
31953 
31954 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
31955 
31956 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
31957 		ZVAL_COPY(EX_VAR(opline->result.var), value);
31958 	}
31959 
31960 exit_assign_obj:
31961 	zval_ptr_dtor_nogc(free_op2);
31962 
31963 	/* assign_obj has two opcodes! */
31964 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
31965 }
31966 
31967 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
31968 {
31969 	USE_OPLINE
31970 	zend_free_op free_op2, free_op_data;
31971 	zval *object, *property, *value, tmp;
31972 
31973 	SAVE_OPLINE();
31974 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
31975 
31976 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
31977 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
31978 	}
31979 
31980 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
31981 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
31982 
31983 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
31984 		do {
31985 			if (Z_ISREF_P(object)) {
31986 				object = Z_REFVAL_P(object);
31987 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
31988 					break;
31989 				}
31990 			}
31991 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
31992 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
31993 				zend_object *obj;
31994 
31995 				zval_ptr_dtor(object);
31996 				object_init(object);
31997 				Z_ADDREF_P(object);
31998 				obj = Z_OBJ_P(object);
31999 				zend_error(E_WARNING, "Creating default object from empty value");
32000 				if (GC_REFCOUNT(obj) == 1) {
32001 					/* the enclosing container was deleted, obj is unreferenced */
32002 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32003 						ZVAL_NULL(EX_VAR(opline->result.var));
32004 					}
32005 					zval_ptr_dtor_nogc(free_op_data);
32006 					OBJ_RELEASE(obj);
32007 					goto exit_assign_obj;
32008 				}
32009 				Z_DELREF_P(object);
32010 			} else {
32011 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
32012 					zend_string *property_name = zval_get_string(property);
32013 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
32014 					zend_string_release(property_name);
32015 				}
32016 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32017 					ZVAL_NULL(EX_VAR(opline->result.var));
32018 				}
32019 				zval_ptr_dtor_nogc(free_op_data);
32020 				goto exit_assign_obj;
32021 			}
32022 		} while (0);
32023 	}
32024 
32025 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
32026 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
32027 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
32028 		zend_object *zobj = Z_OBJ_P(object);
32029 		zval *property_val;
32030 
32031 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
32032 			property_val = OBJ_PROP(zobj, prop_offset);
32033 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
32034 fast_assign_obj:
32035 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
32036 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32037 					ZVAL_COPY(EX_VAR(opline->result.var), value);
32038 				}
32039 				goto exit_assign_obj;
32040 			}
32041 		} else {
32042 			if (EXPECTED(zobj->properties != NULL)) {
32043 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
32044 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
32045 						GC_REFCOUNT(zobj->properties)--;
32046 					}
32047 					zobj->properties = zend_array_dup(zobj->properties);
32048 				}
32049 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
32050 				if (property_val) {
32051 					goto fast_assign_obj;
32052 				}
32053 			}
32054 
32055 			if (!zobj->ce->__set) {
32056 
32057 				if (EXPECTED(zobj->properties == NULL)) {
32058 					rebuild_object_properties(zobj);
32059 				}
32060 				if (IS_TMP_VAR == IS_CONST) {
32061 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
32062 						Z_ADDREF_P(value);
32063 					}
32064 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
32065 					if (Z_ISREF_P(value)) {
32066 						if (IS_TMP_VAR == IS_VAR) {
32067 							zend_reference *ref = Z_REF_P(value);
32068 							if (--GC_REFCOUNT(ref) == 0) {
32069 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
32070 								efree_size(ref, sizeof(zend_reference));
32071 								value = &tmp;
32072 							} else {
32073 								value = Z_REFVAL_P(value);
32074 								if (Z_REFCOUNTED_P(value)) {
32075 									Z_ADDREF_P(value);
32076 								}
32077 							}
32078 						} else {
32079 							value = Z_REFVAL_P(value);
32080 							if (Z_REFCOUNTED_P(value)) {
32081 								Z_ADDREF_P(value);
32082 							}
32083 						}
32084 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
32085 						Z_ADDREF_P(value);
32086 					}
32087 				}
32088 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
32089 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32090 					ZVAL_COPY(EX_VAR(opline->result.var), value);
32091 				}
32092 				goto exit_assign_obj;
32093 			}
32094 		}
32095 	}
32096 
32097 	if (!Z_OBJ_HT_P(object)->write_property) {
32098 		zend_string *property_name = zval_get_string(property);
32099 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
32100 		zend_string_release(property_name);
32101 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32102 			ZVAL_NULL(EX_VAR(opline->result.var));
32103 		}
32104 		zval_ptr_dtor_nogc(free_op_data);
32105 		goto exit_assign_obj;
32106 	}
32107 
32108 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
32109 		ZVAL_DEREF(value);
32110 	}
32111 
32112 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
32113 
32114 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32115 		ZVAL_COPY(EX_VAR(opline->result.var), value);
32116 	}
32117 	zval_ptr_dtor_nogc(free_op_data);
32118 exit_assign_obj:
32119 	zval_ptr_dtor_nogc(free_op2);
32120 
32121 	/* assign_obj has two opcodes! */
32122 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
32123 }
32124 
32125 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32126 {
32127 	USE_OPLINE
32128 	zend_free_op free_op2, free_op_data;
32129 	zval *object, *property, *value, tmp;
32130 
32131 	SAVE_OPLINE();
32132 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
32133 
32134 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32135 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32136 	}
32137 
32138 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32139 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
32140 
32141 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
32142 		do {
32143 			if (Z_ISREF_P(object)) {
32144 				object = Z_REFVAL_P(object);
32145 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
32146 					break;
32147 				}
32148 			}
32149 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
32150 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
32151 				zend_object *obj;
32152 
32153 				zval_ptr_dtor(object);
32154 				object_init(object);
32155 				Z_ADDREF_P(object);
32156 				obj = Z_OBJ_P(object);
32157 				zend_error(E_WARNING, "Creating default object from empty value");
32158 				if (GC_REFCOUNT(obj) == 1) {
32159 					/* the enclosing container was deleted, obj is unreferenced */
32160 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32161 						ZVAL_NULL(EX_VAR(opline->result.var));
32162 					}
32163 					zval_ptr_dtor_nogc(free_op_data);
32164 					OBJ_RELEASE(obj);
32165 					goto exit_assign_obj;
32166 				}
32167 				Z_DELREF_P(object);
32168 			} else {
32169 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
32170 					zend_string *property_name = zval_get_string(property);
32171 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
32172 					zend_string_release(property_name);
32173 				}
32174 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32175 					ZVAL_NULL(EX_VAR(opline->result.var));
32176 				}
32177 				zval_ptr_dtor_nogc(free_op_data);
32178 				goto exit_assign_obj;
32179 			}
32180 		} while (0);
32181 	}
32182 
32183 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
32184 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
32185 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
32186 		zend_object *zobj = Z_OBJ_P(object);
32187 		zval *property_val;
32188 
32189 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
32190 			property_val = OBJ_PROP(zobj, prop_offset);
32191 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
32192 fast_assign_obj:
32193 				value = zend_assign_to_variable(property_val, value, IS_VAR);
32194 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32195 					ZVAL_COPY(EX_VAR(opline->result.var), value);
32196 				}
32197 				goto exit_assign_obj;
32198 			}
32199 		} else {
32200 			if (EXPECTED(zobj->properties != NULL)) {
32201 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
32202 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
32203 						GC_REFCOUNT(zobj->properties)--;
32204 					}
32205 					zobj->properties = zend_array_dup(zobj->properties);
32206 				}
32207 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
32208 				if (property_val) {
32209 					goto fast_assign_obj;
32210 				}
32211 			}
32212 
32213 			if (!zobj->ce->__set) {
32214 
32215 				if (EXPECTED(zobj->properties == NULL)) {
32216 					rebuild_object_properties(zobj);
32217 				}
32218 				if (IS_VAR == IS_CONST) {
32219 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
32220 						Z_ADDREF_P(value);
32221 					}
32222 				} else if (IS_VAR != IS_TMP_VAR) {
32223 					if (Z_ISREF_P(value)) {
32224 						if (IS_VAR == IS_VAR) {
32225 							zend_reference *ref = Z_REF_P(value);
32226 							if (--GC_REFCOUNT(ref) == 0) {
32227 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
32228 								efree_size(ref, sizeof(zend_reference));
32229 								value = &tmp;
32230 							} else {
32231 								value = Z_REFVAL_P(value);
32232 								if (Z_REFCOUNTED_P(value)) {
32233 									Z_ADDREF_P(value);
32234 								}
32235 							}
32236 						} else {
32237 							value = Z_REFVAL_P(value);
32238 							if (Z_REFCOUNTED_P(value)) {
32239 								Z_ADDREF_P(value);
32240 							}
32241 						}
32242 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
32243 						Z_ADDREF_P(value);
32244 					}
32245 				}
32246 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
32247 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32248 					ZVAL_COPY(EX_VAR(opline->result.var), value);
32249 				}
32250 				goto exit_assign_obj;
32251 			}
32252 		}
32253 	}
32254 
32255 	if (!Z_OBJ_HT_P(object)->write_property) {
32256 		zend_string *property_name = zval_get_string(property);
32257 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
32258 		zend_string_release(property_name);
32259 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32260 			ZVAL_NULL(EX_VAR(opline->result.var));
32261 		}
32262 		zval_ptr_dtor_nogc(free_op_data);
32263 		goto exit_assign_obj;
32264 	}
32265 
32266 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
32267 		ZVAL_DEREF(value);
32268 	}
32269 
32270 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
32271 
32272 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32273 		ZVAL_COPY(EX_VAR(opline->result.var), value);
32274 	}
32275 	zval_ptr_dtor_nogc(free_op_data);
32276 exit_assign_obj:
32277 	zval_ptr_dtor_nogc(free_op2);
32278 
32279 	/* assign_obj has two opcodes! */
32280 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
32281 }
32282 
32283 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32284 {
32285 	USE_OPLINE
32286 	zend_free_op free_op2;
32287 	zval *object, *property, *value, tmp;
32288 
32289 	SAVE_OPLINE();
32290 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
32291 
32292 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32293 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32294 	}
32295 
32296 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32297 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
32298 
32299 	if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
32300 		do {
32301 			if (Z_ISREF_P(object)) {
32302 				object = Z_REFVAL_P(object);
32303 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
32304 					break;
32305 				}
32306 			}
32307 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
32308 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
32309 				zend_object *obj;
32310 
32311 				zval_ptr_dtor(object);
32312 				object_init(object);
32313 				Z_ADDREF_P(object);
32314 				obj = Z_OBJ_P(object);
32315 				zend_error(E_WARNING, "Creating default object from empty value");
32316 				if (GC_REFCOUNT(obj) == 1) {
32317 					/* the enclosing container was deleted, obj is unreferenced */
32318 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32319 						ZVAL_NULL(EX_VAR(opline->result.var));
32320 					}
32321 
32322 					OBJ_RELEASE(obj);
32323 					goto exit_assign_obj;
32324 				}
32325 				Z_DELREF_P(object);
32326 			} else {
32327 				if (IS_UNUSED != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
32328 					zend_string *property_name = zval_get_string(property);
32329 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
32330 					zend_string_release(property_name);
32331 				}
32332 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32333 					ZVAL_NULL(EX_VAR(opline->result.var));
32334 				}
32335 
32336 				goto exit_assign_obj;
32337 			}
32338 		} while (0);
32339 	}
32340 
32341 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
32342 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
32343 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
32344 		zend_object *zobj = Z_OBJ_P(object);
32345 		zval *property_val;
32346 
32347 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
32348 			property_val = OBJ_PROP(zobj, prop_offset);
32349 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
32350 fast_assign_obj:
32351 				value = zend_assign_to_variable(property_val, value, IS_CV);
32352 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32353 					ZVAL_COPY(EX_VAR(opline->result.var), value);
32354 				}
32355 				goto exit_assign_obj;
32356 			}
32357 		} else {
32358 			if (EXPECTED(zobj->properties != NULL)) {
32359 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
32360 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
32361 						GC_REFCOUNT(zobj->properties)--;
32362 					}
32363 					zobj->properties = zend_array_dup(zobj->properties);
32364 				}
32365 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
32366 				if (property_val) {
32367 					goto fast_assign_obj;
32368 				}
32369 			}
32370 
32371 			if (!zobj->ce->__set) {
32372 
32373 				if (EXPECTED(zobj->properties == NULL)) {
32374 					rebuild_object_properties(zobj);
32375 				}
32376 				if (IS_CV == IS_CONST) {
32377 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
32378 						Z_ADDREF_P(value);
32379 					}
32380 				} else if (IS_CV != IS_TMP_VAR) {
32381 					if (Z_ISREF_P(value)) {
32382 						if (IS_CV == IS_VAR) {
32383 							zend_reference *ref = Z_REF_P(value);
32384 							if (--GC_REFCOUNT(ref) == 0) {
32385 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
32386 								efree_size(ref, sizeof(zend_reference));
32387 								value = &tmp;
32388 							} else {
32389 								value = Z_REFVAL_P(value);
32390 								if (Z_REFCOUNTED_P(value)) {
32391 									Z_ADDREF_P(value);
32392 								}
32393 							}
32394 						} else {
32395 							value = Z_REFVAL_P(value);
32396 							if (Z_REFCOUNTED_P(value)) {
32397 								Z_ADDREF_P(value);
32398 							}
32399 						}
32400 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
32401 						Z_ADDREF_P(value);
32402 					}
32403 				}
32404 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
32405 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32406 					ZVAL_COPY(EX_VAR(opline->result.var), value);
32407 				}
32408 				goto exit_assign_obj;
32409 			}
32410 		}
32411 	}
32412 
32413 	if (!Z_OBJ_HT_P(object)->write_property) {
32414 		zend_string *property_name = zval_get_string(property);
32415 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
32416 		zend_string_release(property_name);
32417 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32418 			ZVAL_NULL(EX_VAR(opline->result.var));
32419 		}
32420 
32421 		goto exit_assign_obj;
32422 	}
32423 
32424 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
32425 		ZVAL_DEREF(value);
32426 	}
32427 
32428 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
32429 
32430 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
32431 		ZVAL_COPY(EX_VAR(opline->result.var), value);
32432 	}
32433 
32434 exit_assign_obj:
32435 	zval_ptr_dtor_nogc(free_op2);
32436 
32437 	/* assign_obj has two opcodes! */
32438 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
32439 }
32440 
32441 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32442 {
32443 	USE_OPLINE
32444 	zend_free_op free_op2;
32445 	zend_string **rope;
32446 	zval *var;
32447 
32448 	/* Compiler allocates the necessary number of zval slots to keep the rope */
32449 	rope = (zend_string**)EX_VAR(opline->result.var);
32450 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
32451 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32452 		rope[0] = zend_string_copy(Z_STR_P(var));
32453 	} else {
32454 		var = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32455 		if (EXPECTED(Z_TYPE_P(var) == IS_STRING)) {
32456 			if ((IS_TMP_VAR|IS_VAR) == IS_CV) {
32457 				rope[0] = zend_string_copy(Z_STR_P(var));
32458 			} else {
32459 				rope[0] = Z_STR_P(var);
32460 			}
32461 		} else {
32462 			SAVE_OPLINE();
32463 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(var) == IS_UNDEF)) {
32464 				GET_OP2_UNDEF_CV(var, BP_VAR_R);
32465 			}
32466 			rope[0] = _zval_get_string_func(var);
32467 			zval_ptr_dtor_nogc(free_op2);
32468 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32469 		}
32470 	}
32471 	ZEND_VM_NEXT_OPCODE();
32472 }
32473 
32474 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32475 {
32476 	USE_OPLINE
32477 	zval *function_name;
32478 	zend_free_op free_op2;
32479 	zval *object;
32480 	zend_function *fbc;
32481 	zend_class_entry *called_scope;
32482 	zend_object *obj;
32483 	zend_execute_data *call;
32484 	uint32_t call_info;
32485 
32486 	SAVE_OPLINE();
32487 
32488 	object = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
32489 
32490 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32491 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32492 	}
32493 
32494 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32495 
32496 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
32497 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
32498 		do {
32499 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
32500 				function_name = Z_REFVAL_P(function_name);
32501 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
32502 					break;
32503 				}
32504 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
32505 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
32506 				if (UNEXPECTED(EG(exception) != NULL)) {
32507 
32508 					HANDLE_EXCEPTION();
32509 				}
32510 			}
32511 			zend_throw_error(NULL, "Method name must be a string");
32512 			zval_ptr_dtor_nogc(free_op2);
32513 
32514 			HANDLE_EXCEPTION();
32515 		} while (0);
32516 	}
32517 
32518 	if (IS_UNUSED != IS_UNUSED) {
32519 		do {
32520 			if (IS_UNUSED == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
32521 				if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
32522 					object = Z_REFVAL_P(object);
32523 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
32524 						break;
32525 					}
32526 				}
32527 				if (IS_UNUSED == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
32528 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
32529 					if (UNEXPECTED(EG(exception) != NULL)) {
32530 						zval_ptr_dtor_nogc(free_op2);
32531 						HANDLE_EXCEPTION();
32532 					}
32533 				}
32534 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
32535 				zval_ptr_dtor_nogc(free_op2);
32536 
32537 				HANDLE_EXCEPTION();
32538 			}
32539 		} while (0);
32540 	}
32541 
32542 	obj = Z_OBJ_P(object);
32543 	called_scope = obj->ce;
32544 
32545 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
32546 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
32547 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
32548 	} else {
32549 	    zend_object *orig_obj = obj;
32550 
32551 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
32552 			zend_throw_error(NULL, "Object does not support method calls");
32553 			zval_ptr_dtor_nogc(free_op2);
32554 
32555 			HANDLE_EXCEPTION();
32556 		}
32557 
32558 		/* First, locate the function. */
32559 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
32560 		if (UNEXPECTED(fbc == NULL)) {
32561 			if (EXPECTED(!EG(exception))) {
32562 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
32563 			}
32564 			zval_ptr_dtor_nogc(free_op2);
32565 
32566 			HANDLE_EXCEPTION();
32567 		}
32568 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
32569 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
32570 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
32571 		    EXPECTED(obj == orig_obj)) {
32572 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
32573 		}
32574 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
32575 			init_func_run_time_cache(&fbc->op_array);
32576 		}
32577 	}
32578 
32579 	call_info = ZEND_CALL_NESTED_FUNCTION;
32580 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
32581 		obj = NULL;
32582 	} else if (IS_UNUSED & (IS_VAR|IS_TMP_VAR|IS_CV)) {
32583 		/* CV may be changed indirectly (e.g. when it's a reference) */
32584 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
32585 		GC_REFCOUNT(obj)++; /* For $this pointer */
32586 	}
32587 
32588 	zval_ptr_dtor_nogc(free_op2);
32589 
32590 	if ((IS_UNUSED & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
32591 		HANDLE_EXCEPTION();
32592 	}
32593 
32594 	call = zend_vm_stack_push_call_frame(call_info,
32595 		fbc, opline->extended_value, called_scope, obj);
32596 	call->prev_execute_data = EX(call);
32597 	EX(call) = call;
32598 
32599 	ZEND_VM_NEXT_OPCODE();
32600 }
32601 
32602 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32603 {
32604 	USE_OPLINE
32605 	zval *function_name;
32606 	zend_class_entry *ce;
32607 	zend_object *object;
32608 	zend_function *fbc;
32609 	zend_execute_data *call;
32610 
32611 	SAVE_OPLINE();
32612 
32613 	if (IS_UNUSED == IS_CONST) {
32614 		/* no function found. try a static method in class */
32615 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)));
32616 		if (UNEXPECTED(ce == NULL)) {
32617 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op1)), EX_CONSTANT(opline->op1) + 1, ZEND_FETCH_CLASS_DEFAULT |  ZEND_FETCH_CLASS_EXCEPTION);
32618 			if (UNEXPECTED(ce == NULL)) {
32619 				ZEND_ASSERT(EG(exception));
32620 				zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
32621 				HANDLE_EXCEPTION();
32622 			}
32623 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce);
32624 		}
32625 	} else if (IS_UNUSED == IS_UNUSED) {
32626 		ce = zend_fetch_class(NULL, opline->op1.num);
32627 		if (UNEXPECTED(ce == NULL)) {
32628 			ZEND_ASSERT(EG(exception));
32629 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
32630 			HANDLE_EXCEPTION();
32631 		}
32632 	} else {
32633 		ce = Z_CE_P(EX_VAR(opline->op1.var));
32634 	}
32635 
32636 	if (IS_UNUSED == IS_CONST &&
32637 	    (IS_TMP_VAR|IS_VAR) == IS_CONST &&
32638 	    EXPECTED((fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) != NULL)) {
32639 		/* nothing to do */
32640 	} else if (IS_UNUSED != IS_CONST &&
32641 	           (IS_TMP_VAR|IS_VAR) == IS_CONST &&
32642 	           EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2))) == ce)) {
32643 		fbc = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)) + sizeof(void*));
32644 	} else if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
32645 		zend_free_op free_op2;
32646 
32647 		function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32648 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
32649 			if (UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
32650 				do {
32651 					if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV) && Z_ISREF_P(function_name)) {
32652 						function_name = Z_REFVAL_P(function_name);
32653 						if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
32654 							break;
32655 						}
32656 					} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
32657 						GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
32658 						if (UNEXPECTED(EG(exception) != NULL)) {
32659 							HANDLE_EXCEPTION();
32660 						}
32661 					}
32662 					zend_throw_error(NULL, "Function name must be a string");
32663 					zval_ptr_dtor_nogc(free_op2);
32664 					HANDLE_EXCEPTION();
32665 				} while (0);
32666  			}
32667 		}
32668 
32669 		if (ce->get_static_method) {
32670 			fbc = ce->get_static_method(ce, Z_STR_P(function_name));
32671 		} else {
32672 			fbc = zend_std_get_static_method(ce, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
32673 		}
32674 		if (UNEXPECTED(fbc == NULL)) {
32675 			if (EXPECTED(!EG(exception))) {
32676 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(ce->name), Z_STRVAL_P(function_name));
32677 			}
32678 			zval_ptr_dtor_nogc(free_op2);
32679 			HANDLE_EXCEPTION();
32680 		}
32681 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
32682 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
32683 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE)))) {
32684 			if (IS_UNUSED == IS_CONST) {
32685 				CACHE_PTR(Z_CACHE_SLOT_P(function_name), fbc);
32686 			} else {
32687 				CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), ce, fbc);
32688 			}
32689 		}
32690 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
32691 			init_func_run_time_cache(&fbc->op_array);
32692 		}
32693 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
32694 			zval_ptr_dtor_nogc(free_op2);
32695 		}
32696 	} else {
32697 		if (UNEXPECTED(ce->constructor == NULL)) {
32698 			zend_throw_error(NULL, "Cannot call constructor");
32699 			HANDLE_EXCEPTION();
32700 		}
32701 		if (Z_TYPE(EX(This)) == IS_OBJECT && Z_OBJ(EX(This))->ce != ce->constructor->common.scope && (ce->constructor->common.fn_flags & ZEND_ACC_PRIVATE)) {
32702 			zend_throw_error(NULL, "Cannot call private %s::__construct()", ZSTR_VAL(ce->name));
32703 			HANDLE_EXCEPTION();
32704 		}
32705 		fbc = ce->constructor;
32706 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
32707 			init_func_run_time_cache(&fbc->op_array);
32708 		}
32709 	}
32710 
32711 	object = NULL;
32712 	if (!(fbc->common.fn_flags & ZEND_ACC_STATIC)) {
32713 		if (Z_TYPE(EX(This)) == IS_OBJECT && instanceof_function(Z_OBJCE(EX(This)), ce)) {
32714 			object = Z_OBJ(EX(This));
32715 			ce = object->ce;
32716 		} else {
32717 			if (fbc->common.fn_flags & ZEND_ACC_ALLOW_STATIC) {
32718 				/* Allowed for PHP 4 compatibility. */
32719 				zend_error(
32720 					E_DEPRECATED,
32721 					"Non-static method %s::%s() should not be called statically",
32722 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
32723 				if (UNEXPECTED(EG(exception) != NULL)) {
32724 					HANDLE_EXCEPTION();
32725 				}
32726 			} else {
32727 				/* An internal function assumes $this is present and won't check that.
32728 				 * So PHP would crash by allowing the call. */
32729 				zend_throw_error(
32730 					zend_ce_error,
32731 					"Non-static method %s::%s() cannot be called statically",
32732 					ZSTR_VAL(fbc->common.scope->name), ZSTR_VAL(fbc->common.function_name));
32733 				HANDLE_EXCEPTION();
32734 			}
32735 		}
32736 	}
32737 
32738 	if (IS_UNUSED == IS_UNUSED) {
32739 		/* previous opcode is ZEND_FETCH_CLASS */
32740 		if ((opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_PARENT ||
32741 		    (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) {
32742 			if (Z_TYPE(EX(This)) == IS_OBJECT) {
32743 				ce = Z_OBJCE(EX(This));
32744 			} else {
32745 				ce = Z_CE(EX(This));
32746 			}
32747 		}
32748 	}
32749 
32750 	call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_FUNCTION,
32751 		fbc, opline->extended_value, ce, object);
32752 	call->prev_execute_data = EX(call);
32753 	EX(call) = call;
32754 
32755 	ZEND_VM_NEXT_OPCODE();
32756 }
32757 
32758 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32759 {
32760 	USE_OPLINE
32761 	zend_free_op free_op2;
32762 	zval *container;
32763 	zval *offset;
32764 
32765 	SAVE_OPLINE();
32766 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
32767 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32768 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32769 	}
32770 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32771 
32772 	do {
32773 		if (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
32774 			if (Z_ISREF_P(container)) {
32775 				container = Z_REFVAL_P(container);
32776 				if (Z_TYPE_P(container) != IS_OBJECT) {
32777 					break;
32778 				}
32779 			} else {
32780 				break;
32781 			}
32782 		}
32783 		if (Z_OBJ_HT_P(container)->unset_property) {
32784 			Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
32785 		} else {
32786 			zend_string *property_name = zval_get_string(offset);
32787 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
32788 			zend_string_release(property_name);
32789 		}
32790 	} while (0);
32791 
32792 	zval_ptr_dtor_nogc(free_op2);
32793 
32794 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32795 }
32796 
32797 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32798 {
32799 	USE_OPLINE
32800 	zend_free_op free_op2;
32801 	zval *container;
32802 	int result;
32803 	zval *offset;
32804 
32805 	SAVE_OPLINE();
32806 	container = _get_obj_zval_ptr_unused(EXECUTE_DATA_C);
32807 
32808 	if (IS_UNUSED == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
32809 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
32810 	}
32811 
32812 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
32813 
32814 	if (IS_UNUSED == IS_CONST ||
32815 	    (IS_UNUSED != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
32816 		if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
32817 			container = Z_REFVAL_P(container);
32818 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
32819 				goto isset_no_object;
32820 			}
32821 		} else {
32822 			goto isset_no_object;
32823 		}
32824 	}
32825 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
32826 		zend_string *property_name = zval_get_string(offset);
32827 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
32828 		zend_string_release(property_name);
32829 isset_no_object:
32830 		result = ((opline->extended_value & ZEND_ISSET) == 0);
32831 	} else {
32832 		result =
32833 			((opline->extended_value & ZEND_ISSET) == 0) ^
32834 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
32835 	}
32836 
32837 	zval_ptr_dtor_nogc(free_op2);
32838 
32839 	ZEND_VM_SMART_BRANCH(result, 1);
32840 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
32841 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32842 }
32843 
32844 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32845 {
32846 	USE_OPLINE
32847 
32848 	zval *op1;
32849 
32850 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
32851 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
32852 		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
32853 		ZEND_VM_NEXT_OPCODE();
32854 	}
32855 
32856 	SAVE_OPLINE();
32857 	bitwise_not_function(EX_VAR(opline->result.var),
32858 		_get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC));
32859 
32860 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32861 }
32862 
32863 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32864 {
32865 	USE_OPLINE
32866 	zval *val;
32867 
32868 
32869 	val = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
32870 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
32871 		ZVAL_FALSE(EX_VAR(opline->result.var));
32872 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
32873 		/* The result and op1 can be the same cv zval */
32874 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
32875 		ZVAL_TRUE(EX_VAR(opline->result.var));
32876 		if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
32877 			SAVE_OPLINE();
32878 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
32879 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32880 		}
32881 	} else {
32882 		SAVE_OPLINE();
32883 		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
32884 
32885 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32886 	}
32887 	ZEND_VM_NEXT_OPCODE();
32888 }
32889 
32890 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32891 {
32892 	USE_OPLINE
32893 
32894 	zval *var_ptr;
32895 
32896 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
32897 
32898 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
32899 		fast_long_increment_function(var_ptr);
32900 		if (UNEXPECTED(0)) {
32901 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
32902 		}
32903 		ZEND_VM_NEXT_OPCODE();
32904 	}
32905 
32906 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
32907 		if (UNEXPECTED(0)) {
32908 			ZVAL_NULL(EX_VAR(opline->result.var));
32909 		}
32910 		ZEND_VM_NEXT_OPCODE();
32911 	}
32912 
32913 	SAVE_OPLINE();
32914 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
32915 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
32916 	}
32917 	ZVAL_DEREF(var_ptr);
32918 	SEPARATE_ZVAL_NOREF(var_ptr);
32919 
32920 	increment_function(var_ptr);
32921 
32922 	if (UNEXPECTED(0)) {
32923 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
32924 	}
32925 
32926 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32927 }
32928 
32929 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32930 {
32931 	USE_OPLINE
32932 
32933 	zval *var_ptr;
32934 
32935 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
32936 
32937 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
32938 		fast_long_increment_function(var_ptr);
32939 		if (UNEXPECTED(1)) {
32940 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
32941 		}
32942 		ZEND_VM_NEXT_OPCODE();
32943 	}
32944 
32945 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
32946 		if (UNEXPECTED(1)) {
32947 			ZVAL_NULL(EX_VAR(opline->result.var));
32948 		}
32949 		ZEND_VM_NEXT_OPCODE();
32950 	}
32951 
32952 	SAVE_OPLINE();
32953 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
32954 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
32955 	}
32956 	ZVAL_DEREF(var_ptr);
32957 	SEPARATE_ZVAL_NOREF(var_ptr);
32958 
32959 	increment_function(var_ptr);
32960 
32961 	if (UNEXPECTED(1)) {
32962 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
32963 	}
32964 
32965 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
32966 }
32967 
32968 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
32969 {
32970 	USE_OPLINE
32971 
32972 	zval *var_ptr;
32973 
32974 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
32975 
32976 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
32977 		fast_long_decrement_function(var_ptr);
32978 		if (UNEXPECTED(0)) {
32979 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
32980 		}
32981 		ZEND_VM_NEXT_OPCODE();
32982 	}
32983 
32984 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
32985 		if (UNEXPECTED(0)) {
32986 			ZVAL_NULL(EX_VAR(opline->result.var));
32987 		}
32988 		ZEND_VM_NEXT_OPCODE();
32989 	}
32990 
32991 	SAVE_OPLINE();
32992 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
32993 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
32994 	}
32995 	ZVAL_DEREF(var_ptr);
32996 	SEPARATE_ZVAL_NOREF(var_ptr);
32997 
32998 	decrement_function(var_ptr);
32999 
33000 	if (UNEXPECTED(0)) {
33001 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
33002 	}
33003 
33004 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33005 }
33006 
33007 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33008 {
33009 	USE_OPLINE
33010 
33011 	zval *var_ptr;
33012 
33013 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
33014 
33015 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
33016 		fast_long_decrement_function(var_ptr);
33017 		if (UNEXPECTED(1)) {
33018 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
33019 		}
33020 		ZEND_VM_NEXT_OPCODE();
33021 	}
33022 
33023 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
33024 		if (UNEXPECTED(1)) {
33025 			ZVAL_NULL(EX_VAR(opline->result.var));
33026 		}
33027 		ZEND_VM_NEXT_OPCODE();
33028 	}
33029 
33030 	SAVE_OPLINE();
33031 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
33032 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
33033 	}
33034 	ZVAL_DEREF(var_ptr);
33035 	SEPARATE_ZVAL_NOREF(var_ptr);
33036 
33037 	decrement_function(var_ptr);
33038 
33039 	if (UNEXPECTED(1)) {
33040 		ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
33041 	}
33042 
33043 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33044 }
33045 
33046 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33047 {
33048 	USE_OPLINE
33049 
33050 	zval *var_ptr;
33051 
33052 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
33053 
33054 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
33055 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
33056 		fast_long_increment_function(var_ptr);
33057 		ZEND_VM_NEXT_OPCODE();
33058 	}
33059 
33060 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
33061 		ZVAL_NULL(EX_VAR(opline->result.var));
33062 		ZEND_VM_NEXT_OPCODE();
33063 	}
33064 
33065 	SAVE_OPLINE();
33066 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
33067 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
33068 	}
33069 	ZVAL_DEREF(var_ptr);
33070 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
33071 	zval_opt_copy_ctor(var_ptr);
33072 
33073 	increment_function(var_ptr);
33074 
33075 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33076 }
33077 
33078 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33079 {
33080 	USE_OPLINE
33081 
33082 	zval *var_ptr;
33083 
33084 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
33085 
33086 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
33087 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
33088 		fast_long_decrement_function(var_ptr);
33089 		ZEND_VM_NEXT_OPCODE();
33090 	}
33091 
33092 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
33093 		ZVAL_NULL(EX_VAR(opline->result.var));
33094 		ZEND_VM_NEXT_OPCODE();
33095 	}
33096 
33097 	SAVE_OPLINE();
33098 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(var_ptr) == IS_UNDEF)) {
33099 		var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
33100 	}
33101 	ZVAL_DEREF(var_ptr);
33102 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
33103 	zval_opt_copy_ctor(var_ptr);
33104 
33105 	decrement_function(var_ptr);
33106 
33107 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33108 }
33109 
33110 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33111 {
33112 	USE_OPLINE
33113 
33114 	zval *z;
33115 
33116 	SAVE_OPLINE();
33117 	z = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33118 
33119 	if (Z_TYPE_P(z) == IS_STRING) {
33120 		zend_string *str = Z_STR_P(z);
33121 
33122 		if (ZSTR_LEN(str) != 0) {
33123 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
33124 		}
33125 	} else {
33126 		zend_string *str = _zval_get_string_func(z);
33127 
33128 		if (ZSTR_LEN(str) != 0) {
33129 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
33130 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
33131 			GET_OP1_UNDEF_CV(z, BP_VAR_R);
33132 		}
33133 		zend_string_release(str);
33134 	}
33135 
33136 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33137 }
33138 
33139 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33140 {
33141 	USE_OPLINE
33142 
33143 	zval *val;
33144 
33145 	val = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33146 
33147 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
33148 		ZEND_VM_SET_NEXT_OPCODE(opline + 1);
33149 		ZEND_VM_CONTINUE();
33150 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
33151 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
33152 			SAVE_OPLINE();
33153 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
33154 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
33155 		} else {
33156 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
33157 			ZEND_VM_CONTINUE();
33158 		}
33159 	}
33160 
33161 	SAVE_OPLINE();
33162 	if (i_zend_is_true(val)) {
33163 		opline++;
33164 	} else {
33165 		opline = OP_JMP_ADDR(opline, opline->op2);
33166 	}
33167 
33168 	ZEND_VM_JMP(opline);
33169 }
33170 
33171 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33172 {
33173 	USE_OPLINE
33174 
33175 	zval *val;
33176 
33177 	val = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33178 
33179 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
33180 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
33181 		ZEND_VM_CONTINUE();
33182 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
33183 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
33184 			SAVE_OPLINE();
33185 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
33186 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33187 		} else {
33188 			ZEND_VM_NEXT_OPCODE();
33189 		}
33190 	}
33191 
33192 	SAVE_OPLINE();
33193 	if (i_zend_is_true(val)) {
33194 		opline = OP_JMP_ADDR(opline, opline->op2);
33195 	} else {
33196 		opline++;
33197 	}
33198 
33199 	ZEND_VM_JMP(opline);
33200 }
33201 
33202 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33203 {
33204 	USE_OPLINE
33205 
33206 	zval *val;
33207 
33208 	val = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33209 
33210 	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
33211 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
33212 		ZEND_VM_CONTINUE();
33213 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
33214 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
33215 			SAVE_OPLINE();
33216 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
33217 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
33218 		} else {
33219 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
33220 			ZEND_VM_CONTINUE();
33221 		}
33222 	}
33223 
33224 	SAVE_OPLINE();
33225 	if (i_zend_is_true(val)) {
33226 		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
33227 	} else {
33228 		opline = OP_JMP_ADDR(opline, opline->op2);
33229 	}
33230 
33231 	ZEND_VM_JMP(opline);
33232 }
33233 
33234 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33235 {
33236 	USE_OPLINE
33237 
33238 	zval *val;
33239 	int ret;
33240 
33241 	val = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33242 
33243 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
33244 		ZVAL_TRUE(EX_VAR(opline->result.var));
33245 		ZEND_VM_NEXT_OPCODE();
33246 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
33247 		ZVAL_FALSE(EX_VAR(opline->result.var));
33248 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
33249 			SAVE_OPLINE();
33250 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
33251 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
33252 		} else {
33253 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
33254 			ZEND_VM_CONTINUE();
33255 		}
33256 	}
33257 
33258 	SAVE_OPLINE();
33259 	ret = i_zend_is_true(val);
33260 
33261 	if (ret) {
33262 		ZVAL_TRUE(EX_VAR(opline->result.var));
33263 		opline++;
33264 	} else {
33265 		ZVAL_FALSE(EX_VAR(opline->result.var));
33266 		opline = OP_JMP_ADDR(opline, opline->op2);
33267 	}
33268 	ZEND_VM_JMP(opline);
33269 }
33270 
33271 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33272 {
33273 	USE_OPLINE
33274 
33275 	zval *val;
33276 	int ret;
33277 
33278 	val = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33279 
33280 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
33281 		ZVAL_TRUE(EX_VAR(opline->result.var));
33282 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
33283 		ZEND_VM_CONTINUE();
33284 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
33285 		ZVAL_FALSE(EX_VAR(opline->result.var));
33286 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
33287 			SAVE_OPLINE();
33288 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
33289 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33290 		} else {
33291 			ZEND_VM_NEXT_OPCODE();
33292 		}
33293 	}
33294 
33295 	SAVE_OPLINE();
33296 	ret = i_zend_is_true(val);
33297 
33298 	if (ret) {
33299 		ZVAL_TRUE(EX_VAR(opline->result.var));
33300 		opline = OP_JMP_ADDR(opline, opline->op2);
33301 	} else {
33302 		ZVAL_FALSE(EX_VAR(opline->result.var));
33303 		opline++;
33304 	}
33305 	ZEND_VM_JMP(opline);
33306 }
33307 
33308 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33309 {
33310 	USE_OPLINE
33311 	zval *retval_ptr;
33312 	zval *return_value;
33313 	zend_free_op free_op1;
33314 
33315 	retval_ptr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33316 	return_value = EX(return_value);
33317 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(retval_ptr) == IS_UNDEF)) {
33318 		SAVE_OPLINE();
33319 		retval_ptr = GET_OP1_UNDEF_CV(retval_ptr, BP_VAR_R);
33320 		if (return_value) {
33321 			ZVAL_NULL(return_value);
33322 		}
33323 	} else if (!return_value) {
33324 		if (IS_CV & (IS_VAR|IS_TMP_VAR)) {
33325 			if (Z_REFCOUNTED_P(free_op1) && !Z_DELREF_P(free_op1)) {
33326 				SAVE_OPLINE();
33327 				zval_dtor_func(Z_COUNTED_P(free_op1));
33328 			}
33329 		}
33330 	} else {
33331 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
33332 			ZVAL_COPY_VALUE(return_value, retval_ptr);
33333 			if (IS_CV == IS_CONST) {
33334 				if (UNEXPECTED(Z_OPT_REFCOUNTED_P(return_value))) {
33335 					Z_ADDREF_P(return_value);
33336 				}
33337 			}
33338 		} else if (IS_CV == IS_CV) {
33339 			if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
33340 				if (EXPECTED(!Z_OPT_ISREF_P(retval_ptr))) {
33341 					ZVAL_COPY_VALUE(return_value, retval_ptr);
33342 					if (EXPECTED(!(EX_CALL_INFO() & ZEND_CALL_CODE))) {
33343 						ZVAL_NULL(retval_ptr);
33344 					} else {
33345 						Z_ADDREF_P(return_value);
33346 					}
33347 				} else {
33348 					retval_ptr = Z_REFVAL_P(retval_ptr);
33349 					ZVAL_COPY(return_value, retval_ptr);
33350 				}
33351 			} else {
33352 				ZVAL_COPY_VALUE(return_value, retval_ptr);
33353 			}
33354 		} else /* if (IS_CV == IS_VAR) */ {
33355 			if (UNEXPECTED(Z_ISREF_P(retval_ptr))) {
33356 				zend_refcounted *ref = Z_COUNTED_P(retval_ptr);
33357 
33358 				retval_ptr = Z_REFVAL_P(retval_ptr);
33359 				ZVAL_COPY_VALUE(return_value, retval_ptr);
33360 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
33361 					efree_size(ref, sizeof(zend_reference));
33362 				} else if (Z_OPT_REFCOUNTED_P(retval_ptr)) {
33363 					Z_ADDREF_P(retval_ptr);
33364 				}
33365 			} else {
33366 				ZVAL_COPY_VALUE(return_value, retval_ptr);
33367 			}
33368 		}
33369 	}
33370 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33371 }
33372 
33373 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33374 {
33375 	USE_OPLINE
33376 	zval *retval_ptr;
33377 
33378 
33379 	SAVE_OPLINE();
33380 
33381 	do {
33382 		if ((IS_CV & (IS_CONST|IS_TMP_VAR)) ||
33383 		    (IS_CV == IS_VAR && opline->extended_value == ZEND_RETURNS_VALUE)) {
33384 			/* Not supposed to happen, but we'll allow it */
33385 			zend_error(E_NOTICE, "Only variable references should be returned by reference");
33386 
33387 			retval_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
33388 			if (!EX(return_value)) {
33389 
33390 			} else {
33391 				if (IS_CV == IS_VAR && UNEXPECTED(Z_ISREF_P(retval_ptr))) {
33392 					ZVAL_COPY_VALUE(EX(return_value), retval_ptr);
33393 					break;
33394 				}
33395 
33396 				ZVAL_NEW_REF(EX(return_value), retval_ptr);
33397 				if (IS_CV == IS_CONST) {
33398 					if (Z_REFCOUNTED_P(retval_ptr)) Z_ADDREF_P(retval_ptr);
33399 				}
33400 			}
33401 			break;
33402 		}
33403 
33404 		retval_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
33405 
33406 		if (IS_CV == IS_VAR) {
33407 			if (retval_ptr == &EG(uninitialized_zval) ||
33408 			    (opline->extended_value == ZEND_RETURNS_FUNCTION && !Z_ISREF_P(retval_ptr))) {
33409 				zend_error(E_NOTICE, "Only variable references should be returned by reference");
33410 				if (EX(return_value)) {
33411 					ZVAL_NEW_REF(EX(return_value), retval_ptr);
33412 				} else {
33413 
33414 				}
33415 				break;
33416 			}
33417 		}
33418 
33419 		if (EX(return_value)) {
33420 			ZVAL_MAKE_REF(retval_ptr);
33421 			Z_ADDREF_P(retval_ptr);
33422 			ZVAL_REF(EX(return_value), Z_REF_P(retval_ptr));
33423 		}
33424 
33425 	} while (0);
33426 
33427 	ZEND_VM_TAIL_CALL(zend_leave_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33428 }
33429 
33430 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GENERATOR_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33431 {
33432 	USE_OPLINE
33433 	zval *retval;
33434 
33435 
33436 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
33437 
33438 	SAVE_OPLINE();
33439 	retval = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
33440 
33441 	/* Copy return value into generator->retval */
33442 	if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
33443 		ZVAL_COPY_VALUE(&generator->retval, retval);
33444 		if (IS_CV == IS_CONST) {
33445 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->retval))) {
33446 				Z_ADDREF(generator->retval);
33447 			}
33448 		}
33449 	} else if (IS_CV == IS_CV) {
33450 		ZVAL_DEREF(retval);
33451 		ZVAL_COPY(&generator->retval, retval);
33452 	} else /* if (IS_CV == IS_VAR) */ {
33453 		if (UNEXPECTED(Z_ISREF_P(retval))) {
33454 			zend_refcounted *ref = Z_COUNTED_P(retval);
33455 
33456 			retval = Z_REFVAL_P(retval);
33457 			ZVAL_COPY_VALUE(&generator->retval, retval);
33458 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
33459 				efree_size(ref, sizeof(zend_reference));
33460 			} else if (Z_OPT_REFCOUNTED_P(retval)) {
33461 				Z_ADDREF_P(retval);
33462 			}
33463 		} else {
33464 			ZVAL_COPY_VALUE(&generator->retval, retval);
33465 		}
33466 	}
33467 
33468 	/* Close the generator to free up resources */
33469 	zend_generator_close(generator, 1);
33470 
33471 	/* Pass execution back to handling code */
33472 	ZEND_VM_RETURN();
33473 }
33474 
33475 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33476 {
33477 	USE_OPLINE
33478 	zval *value;
33479 
33480 
33481 	SAVE_OPLINE();
33482 	value = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33483 
33484 	do {
33485 		if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(value) != IS_OBJECT)) {
33486 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
33487 				value = Z_REFVAL_P(value);
33488 				if (EXPECTED(Z_TYPE_P(value) == IS_OBJECT)) {
33489 					break;
33490 				}
33491 			}
33492 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
33493 				GET_OP1_UNDEF_CV(value, BP_VAR_R);
33494 				if (UNEXPECTED(EG(exception) != NULL)) {
33495 					HANDLE_EXCEPTION();
33496 				}
33497 			}
33498 			zend_throw_error(NULL, "Can only throw objects");
33499 
33500 			HANDLE_EXCEPTION();
33501 		}
33502 	} while (0);
33503 
33504 	zend_exception_save();
33505 	if (IS_CV != IS_TMP_VAR) {
33506 		if (Z_REFCOUNTED_P(value)) Z_ADDREF_P(value);
33507 	}
33508 
33509 	zend_throw_exception_object(value);
33510 	zend_exception_restore();
33511 
33512 	HANDLE_EXCEPTION();
33513 }
33514 
33515 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33516 {
33517 	USE_OPLINE
33518 	zval *varptr, *arg;
33519 
33520 
33521 	varptr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33522 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
33523 		SAVE_OPLINE();
33524 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
33525 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
33526 		ZVAL_NULL(arg);
33527 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33528 	}
33529 
33530 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
33531 
33532 	if (IS_CV == IS_CV) {
33533 		ZVAL_OPT_DEREF(varptr);
33534 		ZVAL_COPY(arg, varptr);
33535 	} else /* if (IS_CV == IS_VAR) */ {
33536 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
33537 			zend_refcounted *ref = Z_COUNTED_P(varptr);
33538 
33539 			varptr = Z_REFVAL_P(varptr);
33540 			ZVAL_COPY_VALUE(arg, varptr);
33541 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
33542 				efree_size(ref, sizeof(zend_reference));
33543 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
33544 				Z_ADDREF_P(arg);
33545 			}
33546 		} else {
33547 			ZVAL_COPY_VALUE(arg, varptr);
33548 		}
33549 	}
33550 
33551 	ZEND_VM_NEXT_OPCODE();
33552 }
33553 
33554 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33555 {
33556 	USE_OPLINE
33557 
33558 	zval *varptr, *arg;
33559 
33560 	SAVE_OPLINE();
33561 	varptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
33562 
33563 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
33564 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(varptr))) {
33565 		ZVAL_NEW_EMPTY_REF(arg);
33566 		ZVAL_NULL(Z_REFVAL_P(arg));
33567 		ZEND_VM_NEXT_OPCODE();
33568 	}
33569 
33570 	if (Z_ISREF_P(varptr)) {
33571 		Z_ADDREF_P(varptr);
33572 		ZVAL_COPY_VALUE(arg, varptr);
33573 	} else {
33574 		ZVAL_NEW_REF(arg, varptr);
33575 		Z_ADDREF_P(arg);
33576 		ZVAL_REF(varptr, Z_REF_P(arg));
33577 	}
33578 
33579 	ZEND_VM_NEXT_OPCODE();
33580 }
33581 
33582 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33583 {
33584 	USE_OPLINE
33585 	zval *varptr, *arg;
33586 
33587 	uint32_t arg_num = opline->op2.num;
33588 
33589 	if (EXPECTED(0)) {
33590 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
33591 			goto send_var_by_ref;
33592 		}
33593 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
33594 send_var_by_ref:
33595 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33596 	}
33597 
33598 	varptr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33599 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
33600 		SAVE_OPLINE();
33601 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
33602 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
33603 		ZVAL_NULL(arg);
33604 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33605 	}
33606 
33607 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
33608 
33609 	if (IS_CV == IS_CV) {
33610 		ZVAL_OPT_DEREF(varptr);
33611 		ZVAL_COPY(arg, varptr);
33612 	} else /* if (IS_CV == IS_VAR) */ {
33613 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
33614 			zend_refcounted *ref = Z_COUNTED_P(varptr);
33615 
33616 			varptr = Z_REFVAL_P(varptr);
33617 			ZVAL_COPY_VALUE(arg, varptr);
33618 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
33619 				efree_size(ref, sizeof(zend_reference));
33620 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
33621 				Z_ADDREF_P(arg);
33622 			}
33623 		} else {
33624 			ZVAL_COPY_VALUE(arg, varptr);
33625 		}
33626 	}
33627 
33628 	ZEND_VM_NEXT_OPCODE();
33629 }
33630 
33631 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SPEC_CV_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33632 {
33633 	USE_OPLINE
33634 	zval *varptr, *arg;
33635 
33636 	uint32_t arg_num = opline->op2.num;
33637 
33638 	if (EXPECTED(1)) {
33639 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
33640 			goto send_var_by_ref;
33641 		}
33642 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
33643 send_var_by_ref:
33644 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33645 	}
33646 
33647 	varptr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33648 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(varptr) == IS_UNDEF)) {
33649 		SAVE_OPLINE();
33650 		GET_OP1_UNDEF_CV(varptr, BP_VAR_R);
33651 		arg = ZEND_CALL_VAR(EX(call), opline->result.var);
33652 		ZVAL_NULL(arg);
33653 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33654 	}
33655 
33656 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
33657 
33658 	if (IS_CV == IS_CV) {
33659 		ZVAL_OPT_DEREF(varptr);
33660 		ZVAL_COPY(arg, varptr);
33661 	} else /* if (IS_CV == IS_VAR) */ {
33662 		if (UNEXPECTED(Z_ISREF_P(varptr))) {
33663 			zend_refcounted *ref = Z_COUNTED_P(varptr);
33664 
33665 			varptr = Z_REFVAL_P(varptr);
33666 			ZVAL_COPY_VALUE(arg, varptr);
33667 			if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
33668 				efree_size(ref, sizeof(zend_reference));
33669 			} else if (Z_OPT_REFCOUNTED_P(arg)) {
33670 				Z_ADDREF_P(arg);
33671 			}
33672 		} else {
33673 			ZVAL_COPY_VALUE(arg, varptr);
33674 		}
33675 	}
33676 
33677 	ZEND_VM_NEXT_OPCODE();
33678 }
33679 
33680 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_USER_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33681 {
33682 	USE_OPLINE
33683 	zval *arg, *param;
33684 
33685 
33686 	SAVE_OPLINE();
33687 	arg = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
33688 	param = ZEND_CALL_VAR(EX(call), opline->result.var);
33689 
33690 	if (UNEXPECTED(ARG_MUST_BE_SENT_BY_REF(EX(call)->func, opline->op2.num))) {
33691 		zend_error(E_WARNING, "Parameter %d to %s%s%s() expected to be a reference, value given",
33692 			opline->op2.num,
33693 			EX(call)->func->common.scope ? ZSTR_VAL(EX(call)->func->common.scope->name) : "",
33694 			EX(call)->func->common.scope ? "::" : "",
33695 			ZSTR_VAL(EX(call)->func->common.function_name));
33696 	}
33697 
33698 	ZVAL_COPY(param, arg);
33699 
33700 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33701 }
33702 
33703 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33704 {
33705 	USE_OPLINE
33706 	zval *val;
33707 
33708 
33709 	val = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33710 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
33711 		ZVAL_TRUE(EX_VAR(opline->result.var));
33712 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
33713 		/* The result and op1 can be the same cv zval */
33714 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
33715 		ZVAL_FALSE(EX_VAR(opline->result.var));
33716 		if (IS_CV == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
33717 			SAVE_OPLINE();
33718 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
33719 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33720 		}
33721 	} else {
33722 		SAVE_OPLINE();
33723 		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
33724 
33725 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33726 	}
33727 	ZEND_VM_NEXT_OPCODE();
33728 }
33729 
33730 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33731 {
33732 	USE_OPLINE
33733 
33734 	zval *obj;
33735 	zend_class_entry *ce, *scope;
33736 	zend_function *clone;
33737 	zend_object_clone_obj_t clone_call;
33738 
33739 	SAVE_OPLINE();
33740 	obj = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
33741 
33742 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
33743 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
33744 	}
33745 
33746 	do {
33747 		if (IS_CV == IS_CONST ||
33748 		    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
33749 		    if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
33750 		    	obj = Z_REFVAL_P(obj);
33751 		    	if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
33752 		    		break;
33753 				}
33754 			}
33755 			ZVAL_UNDEF(EX_VAR(opline->result.var));
33756 			if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
33757 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
33758 				if (UNEXPECTED(EG(exception) != NULL)) {
33759 					HANDLE_EXCEPTION();
33760 				}
33761 			}
33762 			zend_throw_error(NULL, "__clone method called on non-object");
33763 
33764 			HANDLE_EXCEPTION();
33765 		}
33766 	} while (0);
33767 
33768 	ce = Z_OBJCE_P(obj);
33769 	clone = ce->clone;
33770 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
33771 	if (UNEXPECTED(clone_call == NULL)) {
33772 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
33773 
33774 		ZVAL_UNDEF(EX_VAR(opline->result.var));
33775 		HANDLE_EXCEPTION();
33776 	}
33777 
33778 	if (clone) {
33779 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
33780 			/* Ensure that if we're calling a private function, we're allowed to do so.
33781 			 */
33782 			scope = EX(func)->op_array.scope;
33783 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
33784 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
33785 
33786 				ZVAL_UNDEF(EX_VAR(opline->result.var));
33787 				HANDLE_EXCEPTION();
33788 			}
33789 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
33790 			/* Ensure that if we're calling a protected function, we're allowed to do so.
33791 			 */
33792 			scope = EX(func)->op_array.scope;
33793 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
33794 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
33795 
33796 				ZVAL_UNDEF(EX_VAR(opline->result.var));
33797 				HANDLE_EXCEPTION();
33798 			}
33799 		}
33800 	}
33801 
33802 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
33803 
33804 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33805 }
33806 
33807 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CAST_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33808 {
33809 	USE_OPLINE
33810 
33811 	zval *expr;
33812 	zval *result = EX_VAR(opline->result.var);
33813 
33814 	SAVE_OPLINE();
33815 	expr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
33816 
33817 	switch (opline->extended_value) {
33818 		case IS_NULL:
33819 			ZVAL_NULL(result);
33820 			break;
33821 		case _IS_BOOL:
33822 			ZVAL_BOOL(result, zend_is_true(expr));
33823 			break;
33824 		case IS_LONG:
33825 			ZVAL_LONG(result, zval_get_long(expr));
33826 			break;
33827 		case IS_DOUBLE:
33828 			ZVAL_DOUBLE(result, zval_get_double(expr));
33829 			break;
33830 		case IS_STRING:
33831 			ZVAL_STR(result, zval_get_string(expr));
33832 			break;
33833 		default:
33834 			if (IS_CV & (IS_VAR|IS_CV)) {
33835 				ZVAL_DEREF(expr);
33836 			}
33837 			/* If value is already of correct type, return it directly */
33838 			if (Z_TYPE_P(expr) == opline->extended_value) {
33839 				ZVAL_COPY_VALUE(result, expr);
33840 				if (IS_CV == IS_CONST) {
33841 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
33842 				} else if (IS_CV != IS_TMP_VAR) {
33843 					if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
33844 				}
33845 
33846 				ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33847 			}
33848 
33849 			if (opline->extended_value == IS_ARRAY) {
33850 				if (Z_TYPE_P(expr) != IS_OBJECT) {
33851 					ZVAL_NEW_ARR(result);
33852 					zend_hash_init(Z_ARRVAL_P(result), 8, NULL, ZVAL_PTR_DTOR, 0);
33853 					if (Z_TYPE_P(expr) != IS_NULL) {
33854 						expr = zend_hash_index_add_new(Z_ARRVAL_P(result), 0, expr);
33855 						if (IS_CV == IS_CONST) {
33856 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
33857 						} else {
33858 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
33859 						}
33860 					}
33861 				} else {
33862 					ZVAL_COPY_VALUE(result, expr);
33863 					Z_ADDREF_P(result);
33864 					convert_to_array(result);
33865 				}
33866 			} else {
33867 				if (Z_TYPE_P(expr) != IS_ARRAY) {
33868 					object_init(result);
33869 					if (Z_TYPE_P(expr) != IS_NULL) {
33870 						expr = zend_hash_add_new(Z_OBJPROP_P(result), ZSTR_KNOWN(ZEND_STR_SCALAR), expr);
33871 						if (IS_CV == IS_CONST) {
33872 							if (UNEXPECTED(Z_OPT_REFCOUNTED_P(expr))) Z_ADDREF_P(expr);
33873 						} else {
33874 							if (Z_OPT_REFCOUNTED_P(expr)) Z_ADDREF_P(expr);
33875 						}
33876 					}
33877 				} else {
33878 					ZVAL_COPY(result, expr);
33879 					convert_to_object(result);
33880 				}
33881 			}
33882 	}
33883 
33884 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33885 }
33886 
33887 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33888 {
33889 	USE_OPLINE
33890 	zend_op_array *new_op_array;
33891 
33892 	zval *inc_filename;
33893 
33894 	SAVE_OPLINE();
33895 	inc_filename = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
33896 	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
33897 
33898 	if (UNEXPECTED(EG(exception) != NULL)) {
33899 		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
33900 			destroy_op_array(new_op_array);
33901 			efree_size(new_op_array, sizeof(zend_op_array));
33902 		}
33903 		UNDEF_RESULT();
33904 		HANDLE_EXCEPTION();
33905 	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
33906 		if (RETURN_VALUE_USED(opline)) {
33907 			ZVAL_TRUE(EX_VAR(opline->result.var));
33908 		}
33909 	} else if (EXPECTED(new_op_array != NULL)) {
33910 		zval *return_value = NULL;
33911 		zend_execute_data *call;
33912 
33913 		if (RETURN_VALUE_USED(opline)) {
33914 			return_value = EX_VAR(opline->result.var);
33915 			ZVAL_NULL(return_value);
33916 		}
33917 
33918 		new_op_array->scope = EX(func)->op_array.scope;
33919 
33920 		call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
33921 			(zend_function*)new_op_array, 0,
33922 			Z_TYPE(EX(This)) != IS_OBJECT ? Z_CE(EX(This)) : NULL,
33923 			Z_TYPE(EX(This)) == IS_OBJECT ? Z_OBJ(EX(This)) : NULL);
33924 
33925 		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
33926 			call->symbol_table = EX(symbol_table);
33927 		} else {
33928 			call->symbol_table = zend_rebuild_symbol_table();
33929 		}
33930 
33931 		call->prev_execute_data = execute_data;
33932 		i_init_code_execute_data(call, new_op_array, return_value);
33933 		if (EXPECTED(zend_execute_ex == execute_ex)) {
33934 			ZEND_VM_ENTER();
33935 		} else {
33936 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
33937 			zend_execute_ex(call);
33938 			zend_vm_stack_free_call_frame(call);
33939 		}
33940 
33941 		destroy_op_array(new_op_array);
33942 		efree_size(new_op_array, sizeof(zend_op_array));
33943 		if (UNEXPECTED(EG(exception) != NULL)) {
33944 			zend_rethrow_exception(execute_data);
33945 			UNDEF_RESULT();
33946 			HANDLE_EXCEPTION();
33947 		}
33948 	} else if (RETURN_VALUE_USED(opline)) {
33949 		ZVAL_FALSE(EX_VAR(opline->result.var));
33950 	}
33951 	ZEND_VM_SET_OPCODE(opline + 1);
33952 	ZEND_VM_CONTINUE();
33953 }
33954 
33955 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
33956 {
33957 	USE_OPLINE
33958 
33959 	zval *array_ptr, *result;
33960 
33961 	SAVE_OPLINE();
33962 
33963 	array_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
33964 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
33965 		result = EX_VAR(opline->result.var);
33966 		ZVAL_COPY_VALUE(result, array_ptr);
33967 		if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(result)) {
33968 			Z_ADDREF_P(array_ptr);
33969 		}
33970 		Z_FE_POS_P(result) = 0;
33971 
33972 		ZEND_VM_NEXT_OPCODE();
33973 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
33974 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
33975 			result = EX_VAR(opline->result.var);
33976 			ZVAL_COPY_VALUE(result, array_ptr);
33977 			if (IS_CV != IS_TMP_VAR) {
33978 				Z_ADDREF_P(array_ptr);
33979 			}
33980 			if (Z_OBJ_P(array_ptr)->properties
33981 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
33982 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
33983 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
33984 				}
33985 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
33986 			}
33987 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
33988 
33989 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
33990 		} else {
33991 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
33992 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 0);
33993 			zend_bool is_empty;
33994 
33995 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
33996 
33997 				if (iter) {
33998 					OBJ_RELEASE(&iter->std);
33999 				}
34000 				if (!EG(exception)) {
34001 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
34002 				}
34003 				ZVAL_UNDEF(EX_VAR(opline->result.var));
34004 				HANDLE_EXCEPTION();
34005 			}
34006 
34007 			iter->index = 0;
34008 			if (iter->funcs->rewind) {
34009 				iter->funcs->rewind(iter);
34010 				if (UNEXPECTED(EG(exception) != NULL)) {
34011 					OBJ_RELEASE(&iter->std);
34012 
34013 					ZVAL_UNDEF(EX_VAR(opline->result.var));
34014 					HANDLE_EXCEPTION();
34015 				}
34016 			}
34017 
34018 			is_empty = iter->funcs->valid(iter) != SUCCESS;
34019 
34020 			if (UNEXPECTED(EG(exception) != NULL)) {
34021 				OBJ_RELEASE(&iter->std);
34022 
34023 				ZVAL_UNDEF(EX_VAR(opline->result.var));
34024 				HANDLE_EXCEPTION();
34025 			}
34026 			iter->index = -1; /* will be set to 0 before using next handler */
34027 
34028 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
34029 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
34030 
34031 			if (UNEXPECTED(EG(exception))) {
34032 				HANDLE_EXCEPTION();
34033 			} else if (is_empty) {
34034 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
34035 				ZEND_VM_CONTINUE();
34036 			} else {
34037 				ZEND_VM_NEXT_OPCODE();
34038 			}
34039 		}
34040 	} else {
34041 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
34042 		ZVAL_UNDEF(EX_VAR(opline->result.var));
34043 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
34044 
34045 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
34046 	}
34047 }
34048 
34049 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34050 {
34051 	USE_OPLINE
34052 
34053 	zval *array_ptr, *array_ref;
34054 
34055 	SAVE_OPLINE();
34056 
34057 	if (IS_CV == IS_VAR || IS_CV == IS_CV) {
34058 		array_ref = array_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
34059 		if (Z_ISREF_P(array_ref)) {
34060 			array_ptr = Z_REFVAL_P(array_ref);
34061 		}
34062 	} else {
34063 		array_ref = array_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
34064 	}
34065 
34066 	if (EXPECTED(Z_TYPE_P(array_ptr) == IS_ARRAY)) {
34067 		if (IS_CV == IS_VAR || IS_CV == IS_CV) {
34068 			if (array_ptr == array_ref) {
34069 				ZVAL_NEW_REF(array_ref, array_ref);
34070 				array_ptr = Z_REFVAL_P(array_ref);
34071 			}
34072 			Z_ADDREF_P(array_ref);
34073 			ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
34074 		} else {
34075 			array_ref = EX_VAR(opline->result.var);
34076 			ZVAL_NEW_REF(array_ref, array_ptr);
34077 			array_ptr = Z_REFVAL_P(array_ref);
34078 		}
34079 		if (IS_CV == IS_CONST) {
34080 			zval_copy_ctor_func(array_ptr);
34081 		} else {
34082 			SEPARATE_ARRAY(array_ptr);
34083 		}
34084 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_ARRVAL_P(array_ptr), 0);
34085 
34086 		ZEND_VM_NEXT_OPCODE();
34087 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(array_ptr) == IS_OBJECT)) {
34088 		if (!Z_OBJCE_P(array_ptr)->get_iterator) {
34089 			if (IS_CV == IS_VAR || IS_CV == IS_CV) {
34090 				if (array_ptr == array_ref) {
34091 					ZVAL_NEW_REF(array_ref, array_ref);
34092 					array_ptr = Z_REFVAL_P(array_ref);
34093 				}
34094 				Z_ADDREF_P(array_ref);
34095 				ZVAL_COPY_VALUE(EX_VAR(opline->result.var), array_ref);
34096 			} else {
34097 				array_ptr = EX_VAR(opline->result.var);
34098 				ZVAL_COPY_VALUE(array_ptr, array_ref);
34099 			}
34100 			if (Z_OBJ_P(array_ptr)->properties
34101 			 && UNEXPECTED(GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties) > 1)) {
34102 				if (EXPECTED(!(GC_FLAGS(Z_OBJ_P(array_ptr)->properties) & IS_ARRAY_IMMUTABLE))) {
34103 					GC_REFCOUNT(Z_OBJ_P(array_ptr)->properties)--;
34104 				}
34105 				Z_OBJ_P(array_ptr)->properties = zend_array_dup(Z_OBJ_P(array_ptr)->properties);
34106 			}
34107 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = zend_hash_iterator_add(Z_OBJPROP_P(array_ptr), 0);
34108 
34109 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34110 		} else {
34111 			zend_class_entry *ce = Z_OBJCE_P(array_ptr);
34112 			zend_object_iterator *iter = ce->get_iterator(ce, array_ptr, 1);
34113 			zend_bool is_empty;
34114 
34115 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
34116 				if (IS_CV == IS_VAR) {
34117 
34118 				} else {
34119 
34120 				}
34121 				if (!EG(exception)) {
34122 					zend_throw_exception_ex(NULL, 0, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
34123 				}
34124 				ZVAL_UNDEF(EX_VAR(opline->result.var));
34125 				HANDLE_EXCEPTION();
34126 			}
34127 
34128 			iter->index = 0;
34129 			if (iter->funcs->rewind) {
34130 				iter->funcs->rewind(iter);
34131 				if (UNEXPECTED(EG(exception) != NULL)) {
34132 					OBJ_RELEASE(&iter->std);
34133 					if (IS_CV == IS_VAR) {
34134 
34135 					} else {
34136 
34137 					}
34138 					ZVAL_UNDEF(EX_VAR(opline->result.var));
34139 					HANDLE_EXCEPTION();
34140 				}
34141 			}
34142 
34143 			is_empty = iter->funcs->valid(iter) != SUCCESS;
34144 
34145 			if (UNEXPECTED(EG(exception) != NULL)) {
34146 				OBJ_RELEASE(&iter->std);
34147 				if (IS_CV == IS_VAR) {
34148 
34149 				} else {
34150 
34151 				}
34152 				ZVAL_UNDEF(EX_VAR(opline->result.var));
34153 				HANDLE_EXCEPTION();
34154 			}
34155 			iter->index = -1; /* will be set to 0 before using next handler */
34156 
34157 			ZVAL_OBJ(EX_VAR(opline->result.var), &iter->std);
34158 			Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
34159 
34160 			if (IS_CV == IS_VAR) {
34161 
34162 			} else {
34163 
34164 			}
34165 			if (UNEXPECTED(EG(exception))) {
34166 				HANDLE_EXCEPTION();
34167 			} else if (is_empty) {
34168 				ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
34169 				ZEND_VM_CONTINUE();
34170 			} else {
34171 				ZEND_VM_NEXT_OPCODE();
34172 			}
34173 		}
34174 	} else {
34175 		zend_error(E_WARNING, "Invalid argument supplied for foreach()");
34176 		ZVAL_UNDEF(EX_VAR(opline->result.var));
34177 		Z_FE_ITER_P(EX_VAR(opline->result.var)) = (uint32_t)-1;
34178 		if (IS_CV == IS_VAR) {
34179 
34180 		} else {
34181 
34182 		}
34183 		ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
34184 	}
34185 }
34186 
34187 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34188 {
34189 	USE_OPLINE
34190 
34191 	SAVE_OPLINE();
34192 	if (IS_CV != IS_UNUSED) {
34193 
34194 		zval *ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
34195 
34196 		do {
34197 			if (Z_TYPE_P(ptr) == IS_LONG) {
34198 				EG(exit_status) = Z_LVAL_P(ptr);
34199 			} else {
34200 				if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
34201 					ptr = Z_REFVAL_P(ptr);
34202 					if (Z_TYPE_P(ptr) == IS_LONG) {
34203 						EG(exit_status) = Z_LVAL_P(ptr);
34204 						break;
34205 					}
34206 				}
34207 				zend_print_variable(ptr);
34208 			}
34209 		} while (0);
34210 
34211 	}
34212 	zend_bailout();
34213 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
34214 }
34215 
34216 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34217 {
34218 	USE_OPLINE
34219 
34220 	zval *value;
34221 	zval *ref = NULL;
34222 	int ret;
34223 
34224 	SAVE_OPLINE();
34225 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
34226 
34227 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) && Z_ISREF_P(value)) {
34228 		if (IS_CV == IS_VAR) {
34229 			ref = value;
34230 		}
34231 		value = Z_REFVAL_P(value);
34232 	}
34233 
34234 	ret = i_zend_is_true(value);
34235 
34236 	if (UNEXPECTED(EG(exception))) {
34237 
34238 		ZVAL_UNDEF(EX_VAR(opline->result.var));
34239 		HANDLE_EXCEPTION();
34240 	}
34241 
34242 	if (ret) {
34243 		zval *result = EX_VAR(opline->result.var);
34244 
34245 		ZVAL_COPY_VALUE(result, value);
34246 		if (IS_CV == IS_CONST) {
34247 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
34248 		} else if (IS_CV == IS_CV) {
34249 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
34250 		} else if (IS_CV == IS_VAR && ref) {
34251 			zend_reference *r = Z_REF_P(ref);
34252 
34253 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
34254 				efree_size(r, sizeof(zend_reference));
34255 			} else if (Z_OPT_REFCOUNTED_P(result)) {
34256 				Z_ADDREF_P(result);
34257 			}
34258 		}
34259 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
34260 		ZEND_VM_CONTINUE();
34261 	}
34262 
34263 	ZEND_VM_NEXT_OPCODE();
34264 }
34265 
34266 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34267 {
34268 	USE_OPLINE
34269 
34270 	zval *value;
34271 	zval *ref = NULL;
34272 
34273 	SAVE_OPLINE();
34274 	value = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
34275 
34276 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) && Z_ISREF_P(value)) {
34277 		if (IS_CV == IS_VAR) {
34278 			ref = value;
34279 		}
34280 		value = Z_REFVAL_P(value);
34281 	}
34282 
34283 	if (Z_TYPE_P(value) > IS_NULL) {
34284 		zval *result = EX_VAR(opline->result.var);
34285 		ZVAL_COPY_VALUE(result, value);
34286 		if (IS_CV == IS_CONST) {
34287 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) Z_ADDREF_P(result);
34288 		} else if (IS_CV == IS_CV) {
34289 			if (Z_OPT_REFCOUNTED_P(result)) Z_ADDREF_P(result);
34290 		} else if (IS_CV == IS_VAR && ref) {
34291 			zend_reference *r = Z_REF_P(ref);
34292 
34293 			if (UNEXPECTED(--GC_REFCOUNT(r) == 0)) {
34294 				efree_size(r, sizeof(zend_reference));
34295 			} else if (Z_OPT_REFCOUNTED_P(result)) {
34296 				Z_ADDREF_P(result);
34297 			}
34298 		}
34299 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
34300 		ZEND_VM_CONTINUE();
34301 	}
34302 
34303 	ZEND_VM_NEXT_OPCODE();
34304 }
34305 
34306 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34307 {
34308 	USE_OPLINE
34309 
34310 	zval *value;
34311 	zval *result = EX_VAR(opline->result.var);
34312 
34313 	value = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34314 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
34315 		SAVE_OPLINE();
34316 		GET_OP1_UNDEF_CV(value, BP_VAR_R);
34317 		ZVAL_NULL(result);
34318 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34319 	}
34320 
34321 	if (IS_CV == IS_CV) {
34322 		ZVAL_DEREF(value);
34323 		ZVAL_COPY(result, value);
34324 	} else if (IS_CV == IS_VAR) {
34325 		if (UNEXPECTED(Z_ISREF_P(value))) {
34326 			ZVAL_COPY_VALUE(result, Z_REFVAL_P(value));
34327 			if (UNEXPECTED(Z_DELREF_P(value) == 0)) {
34328 				efree_size(Z_REF_P(value), sizeof(zend_reference));
34329 			} else if (Z_OPT_REFCOUNTED_P(result)) {
34330 				Z_ADDREF_P(result);
34331 			}
34332 		} else {
34333 			ZVAL_COPY_VALUE(result, value);
34334 		}
34335 	} else {
34336 		ZVAL_COPY_VALUE(result, value);
34337 		if (IS_CV == IS_CONST) {
34338 			if (UNEXPECTED(Z_OPT_REFCOUNTED_P(result))) {
34339 				Z_ADDREF_P(result);
34340 			}
34341 		}
34342 	}
34343 	ZEND_VM_NEXT_OPCODE();
34344 }
34345 
34346 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_FROM_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34347 {
34348 	USE_OPLINE
34349 
34350 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
34351 
34352 	zval *val;
34353 
34354 
34355 	SAVE_OPLINE();
34356 	val = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
34357 
34358 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
34359 		zend_throw_error(NULL, "Cannot use \"yield from\" in a force-closed generator");
34360 
34361 		UNDEF_RESULT();
34362 		HANDLE_EXCEPTION();
34363 	}
34364 
34365 	if (Z_TYPE_P(val) == IS_ARRAY) {
34366 		ZVAL_COPY_VALUE(&generator->values, val);
34367 		if (IS_CV != IS_TMP_VAR && Z_OPT_REFCOUNTED_P(val)) {
34368 			Z_ADDREF_P(val);
34369 		}
34370 		Z_FE_POS(generator->values) = 0;
34371 
34372 	} else if (IS_CV != IS_CONST && Z_TYPE_P(val) == IS_OBJECT && Z_OBJCE_P(val)->get_iterator) {
34373 		zend_class_entry *ce = Z_OBJCE_P(val);
34374 		if (ce == zend_ce_generator) {
34375 			zend_generator *new_gen = (zend_generator *) Z_OBJ_P(val);
34376 
34377 			if (IS_CV != IS_TMP_VAR) {
34378 				Z_ADDREF_P(val);
34379 			}
34380 
34381 			if (Z_ISUNDEF(new_gen->retval)) {
34382 				if (UNEXPECTED(zend_generator_get_current(new_gen) == generator)) {
34383 					zend_throw_error(NULL, "Impossible to yield from the Generator being currently run");
34384 					zval_ptr_dtor(val);
34385 					UNDEF_RESULT();
34386 					HANDLE_EXCEPTION();
34387 				} else {
34388 					zend_generator_yield_from(generator, new_gen);
34389 				}
34390 			} else if (UNEXPECTED(new_gen->execute_data == NULL)) {
34391 				zend_throw_error(NULL, "Generator passed to yield from was aborted without proper return and is unable to continue");
34392 				zval_ptr_dtor(val);
34393 				UNDEF_RESULT();
34394 				HANDLE_EXCEPTION();
34395 			} else {
34396 				if (RETURN_VALUE_USED(opline)) {
34397 					ZVAL_COPY(EX_VAR(opline->result.var), &new_gen->retval);
34398 				}
34399 				ZEND_VM_NEXT_OPCODE();
34400 			}
34401 		} else {
34402 			zend_object_iterator *iter = ce->get_iterator(ce, val, 0);
34403 
34404 			if (UNEXPECTED(!iter) || UNEXPECTED(EG(exception))) {
34405 				if (!EG(exception)) {
34406 					zend_throw_error(NULL, "Object of type %s did not create an Iterator", ZSTR_VAL(ce->name));
34407 				}
34408 				UNDEF_RESULT();
34409 				HANDLE_EXCEPTION();
34410 			}
34411 
34412 			iter->index = 0;
34413 			if (iter->funcs->rewind) {
34414 				iter->funcs->rewind(iter);
34415 				if (UNEXPECTED(EG(exception) != NULL)) {
34416 					OBJ_RELEASE(&iter->std);
34417 					UNDEF_RESULT();
34418 					HANDLE_EXCEPTION();
34419 				}
34420 			}
34421 
34422 			ZVAL_OBJ(&generator->values, &iter->std);
34423 		}
34424 	} else {
34425 		zend_throw_error(NULL, "Can use \"yield from\" only with arrays and Traversables");
34426 		UNDEF_RESULT();
34427 		HANDLE_EXCEPTION();
34428 	}
34429 
34430 	/* This is the default return value
34431 	 * when the expression is a Generator, it will be overwritten in zend_generator_resume() */
34432 	if (RETURN_VALUE_USED(opline)) {
34433 		ZVAL_NULL(EX_VAR(opline->result.var));
34434 	}
34435 
34436 	/* This generator has no send target (though the generator we delegate to might have one) */
34437 	generator->send_target = NULL;
34438 
34439 	/* We increment to the next op, so we are at the correct position when the
34440 	 * generator is resumed. */
34441 	ZEND_VM_INC_OPCODE();
34442 
34443 	/* The GOTO VM uses a local opline variable. We need to set the opline
34444 	 * variable in execute_data so we don't resume at an old position. */
34445 	SAVE_OPLINE();
34446 
34447 	ZEND_VM_RETURN();
34448 }
34449 
34450 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34451 {
34452 	USE_OPLINE
34453 	zval *value;
34454 
34455 
34456 	value = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34457 	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
34458 		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
34459 
34460 		ZEND_VM_NEXT_OPCODE();
34461 	} else {
34462 		zend_bool strict;
34463 
34464 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
34465 			value = Z_REFVAL_P(value);
34466 			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
34467 				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
34468 
34469 				ZEND_VM_NEXT_OPCODE();
34470 			}
34471 		}
34472 
34473 		SAVE_OPLINE();
34474 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
34475 			value = GET_OP1_UNDEF_CV(value, BP_VAR_R);
34476 		}
34477 		strict = EX_USES_STRICT_TYPES();
34478 		do {
34479 			if (EXPECTED(!strict)) {
34480 				zend_string *str;
34481 				zval tmp;
34482 
34483 				ZVAL_COPY(&tmp, value);
34484 				if (zend_parse_arg_str_weak(&tmp, &str)) {
34485 					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
34486 					zval_ptr_dtor(&tmp);
34487 					break;
34488 				}
34489 				zval_ptr_dtor(&tmp);
34490 			}
34491 			zend_internal_type_error(strict, "strlen() expects parameter 1 to be string, %s given", zend_get_type_by_const(Z_TYPE_P(value)));
34492 			ZVAL_NULL(EX_VAR(opline->result.var));
34493 		} while (0);
34494 	}
34495 
34496 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34497 }
34498 
34499 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34500 {
34501 	USE_OPLINE
34502 	zval *value;
34503 	int result = 0;
34504 
34505 
34506 	SAVE_OPLINE();
34507 	value = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
34508 	if (EXPECTED(Z_TYPE_P(value) == opline->extended_value)) {
34509 		if (UNEXPECTED(Z_TYPE_P(value) == IS_RESOURCE)) {
34510 			const char *type_name = zend_rsrc_list_get_rsrc_type(Z_RES_P(value));
34511 
34512 			if (EXPECTED(type_name != NULL)) {
34513 				result = 1;
34514 			}
34515 		} else {
34516 			result = 1;
34517 		}
34518 	} else if (UNEXPECTED(opline->extended_value == _IS_BOOL) &&
34519 			   EXPECTED(Z_TYPE_P(value) == IS_TRUE || Z_TYPE_P(value) == IS_FALSE)) {
34520 		result = 1;
34521 	}
34522 
34523 	ZEND_VM_SMART_BRANCH(result, 1);
34524 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
34525 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34526 }
34527 
34528 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34529 {
34530 	USE_OPLINE
34531 	zval *var_ptr;
34532 
34533 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34534 	Z_LVAL_P(var_ptr)++;
34535 	if (UNEXPECTED(0)) {
34536 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34537 	}
34538 	ZEND_VM_NEXT_OPCODE();
34539 }
34540 
34541 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34542 {
34543 	USE_OPLINE
34544 	zval *var_ptr;
34545 
34546 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34547 	Z_LVAL_P(var_ptr)++;
34548 	if (UNEXPECTED(1)) {
34549 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34550 	}
34551 	ZEND_VM_NEXT_OPCODE();
34552 }
34553 
34554 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34555 {
34556 	USE_OPLINE
34557 	zval *var_ptr;
34558 
34559 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34560 	fast_long_increment_function(var_ptr);
34561 	if (UNEXPECTED(0)) {
34562 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34563 	}
34564 	ZEND_VM_NEXT_OPCODE();
34565 }
34566 
34567 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34568 {
34569 	USE_OPLINE
34570 	zval *var_ptr;
34571 
34572 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34573 	fast_long_increment_function(var_ptr);
34574 	if (UNEXPECTED(1)) {
34575 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34576 	}
34577 	ZEND_VM_NEXT_OPCODE();
34578 }
34579 
34580 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34581 {
34582 	USE_OPLINE
34583 	zval *var_ptr;
34584 
34585 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34586 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
34587 		fast_long_increment_function(var_ptr);
34588 	} else {
34589 		Z_DVAL_P(var_ptr)++;
34590 	}
34591 	if (UNEXPECTED(0)) {
34592 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34593 	}
34594 	ZEND_VM_NEXT_OPCODE();
34595 }
34596 
34597 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34598 {
34599 	USE_OPLINE
34600 	zval *var_ptr;
34601 
34602 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34603 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
34604 		fast_long_increment_function(var_ptr);
34605 	} else {
34606 		Z_DVAL_P(var_ptr)++;
34607 	}
34608 	if (UNEXPECTED(1)) {
34609 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34610 	}
34611 	ZEND_VM_NEXT_OPCODE();
34612 }
34613 
34614 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34615 {
34616 	USE_OPLINE
34617 	zval *var_ptr;
34618 
34619 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34620 	Z_LVAL_P(var_ptr)--;
34621 	if (UNEXPECTED(0)) {
34622 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34623 	}
34624 	ZEND_VM_NEXT_OPCODE();
34625 }
34626 
34627 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34628 {
34629 	USE_OPLINE
34630 	zval *var_ptr;
34631 
34632 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34633 	Z_LVAL_P(var_ptr)--;
34634 	if (UNEXPECTED(1)) {
34635 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34636 	}
34637 	ZEND_VM_NEXT_OPCODE();
34638 }
34639 
34640 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34641 {
34642 	USE_OPLINE
34643 	zval *var_ptr;
34644 
34645 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34646 	fast_long_decrement_function(var_ptr);
34647 	if (UNEXPECTED(0)) {
34648 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34649 	}
34650 	ZEND_VM_NEXT_OPCODE();
34651 }
34652 
34653 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34654 {
34655 	USE_OPLINE
34656 	zval *var_ptr;
34657 
34658 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34659 	fast_long_decrement_function(var_ptr);
34660 	if (UNEXPECTED(1)) {
34661 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34662 	}
34663 	ZEND_VM_NEXT_OPCODE();
34664 }
34665 
34666 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34667 {
34668 	USE_OPLINE
34669 	zval *var_ptr;
34670 
34671 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34672 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
34673 		fast_long_decrement_function(var_ptr);
34674 	} else {
34675 		Z_DVAL_P(var_ptr)--;
34676 	}
34677 	if (UNEXPECTED(0)) {
34678 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34679 	}
34680 	ZEND_VM_NEXT_OPCODE();
34681 }
34682 
34683 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34684 {
34685 	USE_OPLINE
34686 	zval *var_ptr;
34687 
34688 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34689 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
34690 		fast_long_decrement_function(var_ptr);
34691 	} else {
34692 		Z_DVAL_P(var_ptr)--;
34693 	}
34694 	if (UNEXPECTED(1)) {
34695 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34696 	}
34697 	ZEND_VM_NEXT_OPCODE();
34698 }
34699 
34700 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34701 {
34702 	USE_OPLINE
34703 	zval *var_ptr;
34704 
34705 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34706 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34707 	Z_LVAL_P(var_ptr)++;
34708 	ZEND_VM_NEXT_OPCODE();
34709 }
34710 
34711 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34712 {
34713 	USE_OPLINE
34714 	zval *var_ptr;
34715 
34716 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34717 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34718 	fast_long_increment_function(var_ptr);
34719 	ZEND_VM_NEXT_OPCODE();
34720 }
34721 
34722 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34723 {
34724 	USE_OPLINE
34725 	zval *var_ptr;
34726 
34727 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34728 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34729 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
34730 		fast_long_increment_function(var_ptr);
34731 	} else {
34732 		Z_DVAL_P(var_ptr)++;
34733 	}
34734 	ZEND_VM_NEXT_OPCODE();
34735 }
34736 
34737 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34738 {
34739 	USE_OPLINE
34740 	zval *var_ptr;
34741 
34742 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34743 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34744 	Z_LVAL_P(var_ptr)--;
34745 	ZEND_VM_NEXT_OPCODE();
34746 }
34747 
34748 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34749 {
34750 	USE_OPLINE
34751 	zval *var_ptr;
34752 
34753 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34754 	ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(var_ptr));
34755 	fast_long_decrement_function(var_ptr);
34756 	ZEND_VM_NEXT_OPCODE();
34757 }
34758 
34759 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34760 {
34761 	USE_OPLINE
34762 	zval *var_ptr;
34763 
34764 	var_ptr = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
34765 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), var_ptr);
34766 	if (EXPECTED(Z_TYPE_P(var_ptr) == IS_LONG)) {
34767 		fast_long_decrement_function(var_ptr);
34768 	} else {
34769 		Z_DVAL_P(var_ptr)--;
34770 	}
34771 	ZEND_VM_NEXT_OPCODE();
34772 }
34773 
34774 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34775 {
34776 	USE_OPLINE
34777 	zval *varptr, *arg;
34778 
34779 
34780 	varptr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34781 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
34782 
34783 	if (IS_CV == IS_CV) {
34784 		ZVAL_COPY(arg, varptr);
34785 	} else /* if (IS_CV == IS_VAR) */ {
34786 		ZVAL_COPY_VALUE(arg, varptr);
34787 	}
34788 
34789 	ZEND_VM_NEXT_OPCODE();
34790 }
34791 
34792 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34793 {
34794 	USE_OPLINE
34795 	zval *varptr, *arg;
34796 
34797 	uint32_t arg_num = opline->op2.num;
34798 
34799 	if (EXPECTED(0)) {
34800 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
34801 			goto send_var_by_ref_simple;
34802 		}
34803 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
34804 send_var_by_ref_simple:
34805 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34806 	}
34807 
34808 	varptr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34809 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
34810 
34811 	if (IS_CV == IS_CV) {
34812 		ZVAL_COPY(arg, varptr);
34813 	} else /* if (IS_CV == IS_VAR) */ {
34814 		ZVAL_COPY_VALUE(arg, varptr);
34815 	}
34816 
34817 	ZEND_VM_NEXT_OPCODE();
34818 }
34819 
34820 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34821 {
34822 	USE_OPLINE
34823 	zval *varptr, *arg;
34824 
34825 	uint32_t arg_num = opline->op2.num;
34826 
34827 	if (EXPECTED(1)) {
34828 		if (QUICK_ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
34829 			goto send_var_by_ref_simple;
34830 		}
34831 	} else if (ARG_SHOULD_BE_SENT_BY_REF(EX(call)->func, arg_num)) {
34832 send_var_by_ref_simple:
34833 		ZEND_VM_TAIL_CALL(ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
34834 	}
34835 
34836 	varptr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34837 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
34838 
34839 	if (IS_CV == IS_CV) {
34840 		ZVAL_COPY(arg, varptr);
34841 	} else /* if (IS_CV == IS_VAR) */ {
34842 		ZVAL_COPY_VALUE(arg, varptr);
34843 	}
34844 
34845 	ZEND_VM_NEXT_OPCODE();
34846 }
34847 
34848 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34849 {
34850 	USE_OPLINE
34851 
34852 	zval *op1, *op2, *result;
34853 
34854 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34855 	op2 = EX_CONSTANT(opline->op2);
34856 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
34857 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
34858 			result = EX_VAR(opline->result.var);
34859 			fast_long_add_function(result, op1, op2);
34860 			ZEND_VM_NEXT_OPCODE();
34861 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
34862 			result = EX_VAR(opline->result.var);
34863 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
34864 			ZEND_VM_NEXT_OPCODE();
34865 		}
34866 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
34867 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
34868 			result = EX_VAR(opline->result.var);
34869 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
34870 			ZEND_VM_NEXT_OPCODE();
34871 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
34872 			result = EX_VAR(opline->result.var);
34873 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
34874 			ZEND_VM_NEXT_OPCODE();
34875 		}
34876 	}
34877 
34878 	SAVE_OPLINE();
34879 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
34880 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
34881 	}
34882 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
34883 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
34884 	}
34885 	add_function(EX_VAR(opline->result.var), op1, op2);
34886 
34887 
34888 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34889 }
34890 
34891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34892 {
34893 	USE_OPLINE
34894 
34895 	zval *op1, *op2, *result;
34896 
34897 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34898 	op2 = EX_CONSTANT(opline->op2);
34899 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
34900 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
34901 			result = EX_VAR(opline->result.var);
34902 			fast_long_sub_function(result, op1, op2);
34903 			ZEND_VM_NEXT_OPCODE();
34904 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
34905 			result = EX_VAR(opline->result.var);
34906 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
34907 			ZEND_VM_NEXT_OPCODE();
34908 		}
34909 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
34910 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
34911 			result = EX_VAR(opline->result.var);
34912 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
34913 			ZEND_VM_NEXT_OPCODE();
34914 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
34915 			result = EX_VAR(opline->result.var);
34916 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
34917 			ZEND_VM_NEXT_OPCODE();
34918 		}
34919 	}
34920 
34921 	SAVE_OPLINE();
34922 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
34923 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
34924 	}
34925 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
34926 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
34927 	}
34928 	sub_function(EX_VAR(opline->result.var), op1, op2);
34929 
34930 
34931 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34932 }
34933 
34934 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34935 {
34936 	USE_OPLINE
34937 
34938 	zval *op1, *op2, *result;
34939 
34940 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
34941 	op2 = EX_CONSTANT(opline->op2);
34942 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
34943 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
34944 			zend_long overflow;
34945 
34946 			result = EX_VAR(opline->result.var);
34947 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
34948 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
34949 			ZEND_VM_NEXT_OPCODE();
34950 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
34951 			result = EX_VAR(opline->result.var);
34952 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
34953 			ZEND_VM_NEXT_OPCODE();
34954 		}
34955 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
34956 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
34957 			result = EX_VAR(opline->result.var);
34958 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
34959 			ZEND_VM_NEXT_OPCODE();
34960 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
34961 			result = EX_VAR(opline->result.var);
34962 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
34963 			ZEND_VM_NEXT_OPCODE();
34964 		}
34965 	}
34966 
34967 	SAVE_OPLINE();
34968 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
34969 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
34970 	}
34971 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
34972 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
34973 	}
34974 	mul_function(EX_VAR(opline->result.var), op1, op2);
34975 
34976 
34977 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34978 }
34979 
34980 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34981 {
34982 	USE_OPLINE
34983 
34984 	zval *op1, *op2;
34985 
34986 	SAVE_OPLINE();
34987 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
34988 	op2 = EX_CONSTANT(opline->op2);
34989 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
34990 
34991 
34992 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
34993 }
34994 
34995 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
34996 {
34997 	USE_OPLINE
34998 
34999 	zval *op1, *op2, *result;
35000 
35001 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35002 	op2 = EX_CONSTANT(opline->op2);
35003 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
35004 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35005 			result = EX_VAR(opline->result.var);
35006 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
35007 				SAVE_OPLINE();
35008 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
35009 				ZVAL_UNDEF(EX_VAR(opline->result.var));
35010 				HANDLE_EXCEPTION();
35011 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
35012 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
35013 				ZVAL_LONG(result, 0);
35014 			} else {
35015 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
35016 			}
35017 			ZEND_VM_NEXT_OPCODE();
35018 		}
35019 	}
35020 
35021 	SAVE_OPLINE();
35022 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35023 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35024 	}
35025 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35026 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35027 	}
35028 	mod_function(EX_VAR(opline->result.var), op1, op2);
35029 
35030 
35031 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35032 }
35033 
35034 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35035 {
35036 	USE_OPLINE
35037 
35038 	zval *op1, *op2;
35039 
35040 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35041 	op2 = EX_CONSTANT(opline->op2);
35042 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
35043 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
35044 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
35045 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
35046 		ZEND_VM_NEXT_OPCODE();
35047 	}
35048 
35049 	SAVE_OPLINE();
35050 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35051 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35052 	}
35053 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35054 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35055 	}
35056 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
35057 
35058 
35059 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35060 }
35061 
35062 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35063 {
35064 	USE_OPLINE
35065 
35066 	zval *op1, *op2;
35067 
35068 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35069 	op2 = EX_CONSTANT(opline->op2);
35070 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
35071 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
35072 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
35073 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
35074 		ZEND_VM_NEXT_OPCODE();
35075 	}
35076 
35077 	SAVE_OPLINE();
35078 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35079 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35080 	}
35081 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35082 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35083 	}
35084 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
35085 
35086 
35087 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35088 }
35089 
35090 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35091 {
35092 	USE_OPLINE
35093 
35094 	zval *op1, *op2;
35095 
35096 	SAVE_OPLINE();
35097 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
35098 	op2 = EX_CONSTANT(opline->op2);
35099 	pow_function(EX_VAR(opline->result.var), op1, op2);
35100 
35101 
35102 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35103 }
35104 
35105 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35106 {
35107 	USE_OPLINE
35108 
35109 	zval *op1, *op2;
35110 
35111 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35112 	op2 = EX_CONSTANT(opline->op2);
35113 
35114 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
35115 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
35116 		zend_string *op1_str = Z_STR_P(op1);
35117 		zend_string *op2_str = Z_STR_P(op2);
35118 		zend_string *str;
35119 
35120 		do {
35121 			if (IS_CV != IS_CONST) {
35122 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
35123 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
35124 
35125 					break;
35126 				}
35127 			}
35128 			if (IS_CONST != IS_CONST) {
35129 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
35130 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
35131 
35132 					break;
35133 				}
35134 			}
35135 			if (IS_CV != IS_CONST && IS_CV != IS_CV &&
35136 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
35137 			    size_t len = ZSTR_LEN(op1_str);
35138 
35139 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
35140 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
35141 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
35142 				break;
35143 			} else {
35144 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
35145 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
35146 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
35147 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
35148 			}
35149 
35150 		} while (0);
35151 
35152 		ZEND_VM_NEXT_OPCODE();
35153 	} else {
35154 		SAVE_OPLINE();
35155 
35156 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
35157 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35158 		}
35159 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
35160 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35161 		}
35162 		concat_function(EX_VAR(opline->result.var), op1, op2);
35163 
35164 
35165 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35166 	}
35167 }
35168 
35169 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35170 {
35171 	USE_OPLINE
35172 
35173 	zval *op1, *op2;
35174 	int result;
35175 
35176 	SAVE_OPLINE();
35177 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
35178 	op2 = EX_CONSTANT(opline->op2);
35179 	result = fast_is_identical_function(op1, op2);
35180 
35181 
35182 	ZEND_VM_SMART_BRANCH(result, 1);
35183 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
35184 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35185 }
35186 
35187 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35188 {
35189 	USE_OPLINE
35190 
35191 	zval *op1, *op2;
35192 	int result;
35193 
35194 	SAVE_OPLINE();
35195 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
35196 	op2 = EX_CONSTANT(opline->op2);
35197 	result = fast_is_not_identical_function(op1, op2);
35198 
35199 
35200 	ZEND_VM_SMART_BRANCH(result, 1);
35201 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
35202 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35203 }
35204 
35205 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35206 {
35207 	USE_OPLINE
35208 
35209 	zval *op1, *op2, *result;
35210 
35211 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35212 	op2 = EX_CONSTANT(opline->op2);
35213 	do {
35214 		int result;
35215 
35216 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
35217 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
35218 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
35219 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
35220 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
35221 			} else {
35222 				break;
35223 			}
35224 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
35225 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
35226 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
35227 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
35228 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
35229 			} else {
35230 				break;
35231 			}
35232 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
35233 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
35234 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
35235 					result = 1;
35236 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
35237 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
35238 						result = 0;
35239 					} else {
35240 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
35241 					}
35242 				} else {
35243 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
35244 				}
35245 
35246 
35247 			} else {
35248 				break;
35249 			}
35250 		} else {
35251 			break;
35252 		}
35253 		ZEND_VM_SMART_BRANCH(result, 0);
35254 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
35255 		ZEND_VM_NEXT_OPCODE();
35256 	} while (0);
35257 
35258 	SAVE_OPLINE();
35259 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
35260 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35261 	}
35262 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
35263 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35264 	}
35265 	result = EX_VAR(opline->result.var);
35266 	compare_function(result, op1, op2);
35267 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
35268 
35269 
35270 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35271 }
35272 
35273 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35274 {
35275 	USE_OPLINE
35276 
35277 	zval *op1, *op2, *result;
35278 
35279 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35280 	op2 = EX_CONSTANT(opline->op2);
35281 	do {
35282 		int result;
35283 
35284 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
35285 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
35286 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
35287 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
35288 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
35289 			} else {
35290 				break;
35291 			}
35292 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
35293 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
35294 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
35295 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
35296 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
35297 			} else {
35298 				break;
35299 			}
35300 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
35301 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
35302 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
35303 					result = 0;
35304 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
35305 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
35306 						result = 1;
35307 					} else {
35308 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
35309 					}
35310 				} else {
35311 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
35312 				}
35313 
35314 
35315 			} else {
35316 				break;
35317 			}
35318 		} else {
35319 			break;
35320 		}
35321 		ZEND_VM_SMART_BRANCH(result, 0);
35322 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
35323 		ZEND_VM_NEXT_OPCODE();
35324 	} while (0);
35325 
35326 	SAVE_OPLINE();
35327 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
35328 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35329 	}
35330 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
35331 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35332 	}
35333 	result = EX_VAR(opline->result.var);
35334 	compare_function(result, op1, op2);
35335 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
35336 
35337 
35338 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35339 }
35340 
35341 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35342 {
35343 	USE_OPLINE
35344 
35345 	zval *op1, *op2, *result;
35346 
35347 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35348 	op2 = EX_CONSTANT(opline->op2);
35349 	do {
35350 		int result;
35351 
35352 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
35353 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35354 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
35355 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
35356 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
35357 			} else {
35358 				break;
35359 			}
35360 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
35361 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
35362 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
35363 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35364 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
35365 			} else {
35366 				break;
35367 			}
35368 		} else {
35369 			break;
35370 		}
35371 		ZEND_VM_SMART_BRANCH(result, 0);
35372 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
35373 		ZEND_VM_NEXT_OPCODE();
35374 	} while (0);
35375 
35376 	SAVE_OPLINE();
35377 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35378 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35379 	}
35380 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35381 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35382 	}
35383 	result = EX_VAR(opline->result.var);
35384 	compare_function(result, op1, op2);
35385 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
35386 
35387 
35388 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35389 }
35390 
35391 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35392 {
35393 	USE_OPLINE
35394 
35395 	zval *op1, *op2, *result;
35396 
35397 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35398 	op2 = EX_CONSTANT(opline->op2);
35399 	do {
35400 		int result;
35401 
35402 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
35403 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35404 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
35405 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
35406 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
35407 			} else {
35408 				break;
35409 			}
35410 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
35411 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
35412 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
35413 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35414 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
35415 			} else {
35416 				break;
35417 			}
35418 		} else {
35419 			break;
35420 		}
35421 		ZEND_VM_SMART_BRANCH(result, 0);
35422 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
35423 		ZEND_VM_NEXT_OPCODE();
35424 	} while (0);
35425 
35426 	SAVE_OPLINE();
35427 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35428 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35429 	}
35430 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35431 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35432 	}
35433 	result = EX_VAR(opline->result.var);
35434 	compare_function(result, op1, op2);
35435 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
35436 
35437 
35438 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35439 }
35440 
35441 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35442 {
35443 	USE_OPLINE
35444 
35445 	zval *op1, *op2;
35446 
35447 	SAVE_OPLINE();
35448 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
35449 	op2 = EX_CONSTANT(opline->op2);
35450 	compare_function(EX_VAR(opline->result.var), op1, op2);
35451 
35452 
35453 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35454 }
35455 
35456 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35457 {
35458 	USE_OPLINE
35459 
35460 	zval *op1, *op2;
35461 
35462 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35463 	op2 = EX_CONSTANT(opline->op2);
35464 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
35465 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35466 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
35467 		ZEND_VM_NEXT_OPCODE();
35468 	}
35469 
35470 	SAVE_OPLINE();
35471 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35472 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35473 	}
35474 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35475 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35476 	}
35477 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
35478 
35479 
35480 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35481 }
35482 
35483 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35484 {
35485 	USE_OPLINE
35486 
35487 	zval *op1, *op2;
35488 
35489 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35490 	op2 = EX_CONSTANT(opline->op2);
35491 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
35492 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35493 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
35494 		ZEND_VM_NEXT_OPCODE();
35495 	}
35496 
35497 	SAVE_OPLINE();
35498 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35499 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35500 	}
35501 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35502 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35503 	}
35504 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
35505 
35506 
35507 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35508 }
35509 
35510 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35511 {
35512 	USE_OPLINE
35513 
35514 	zval *op1, *op2;
35515 
35516 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
35517 	op2 = EX_CONSTANT(opline->op2);
35518 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
35519 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
35520 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
35521 		ZEND_VM_NEXT_OPCODE();
35522 	}
35523 
35524 	SAVE_OPLINE();
35525 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
35526 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
35527 	}
35528 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
35529 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
35530 	}
35531 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
35532 
35533 
35534 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35535 }
35536 
35537 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35538 {
35539 	USE_OPLINE
35540 
35541 	zval *op1, *op2;
35542 
35543 	SAVE_OPLINE();
35544 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
35545 	op2 = EX_CONSTANT(opline->op2);
35546 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
35547 
35548 
35549 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35550 }
35551 
35552 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
35553 {
35554 	USE_OPLINE
35555 	zend_free_op free_op_data1;
35556 	zval *object;
35557 	zval *property;
35558 	zval *value;
35559 	zval *zptr;
35560 
35561 	SAVE_OPLINE();
35562 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
35563 
35564 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35565 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35566 	}
35567 
35568 	property = EX_CONSTANT(opline->op2);
35569 
35570 	do {
35571 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
35572 
35573 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
35574 			ZVAL_DEREF(object);
35575 			if (UNEXPECTED(!make_real_object(object))) {
35576 				zend_string *property_name = zval_get_string(property);
35577 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
35578 				zend_string_release(property_name);
35579 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35580 					ZVAL_NULL(EX_VAR(opline->result.var));
35581 				}
35582 				break;
35583 			}
35584 		}
35585 
35586 		/* here we are sure we are dealing with an object */
35587 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
35588 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
35589 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
35590 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35591 					ZVAL_NULL(EX_VAR(opline->result.var));
35592 				}
35593 			} else {
35594 				ZVAL_DEREF(zptr);
35595 				SEPARATE_ZVAL_NOREF(zptr);
35596 
35597 				binary_op(zptr, zptr, value);
35598 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35599 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
35600 				}
35601 			}
35602 		} else {
35603 			zend_assign_op_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
35604 		}
35605 	} while (0);
35606 
35607 	FREE_OP(free_op_data1);
35608 
35609 
35610 	/* assign_obj has two opcodes! */
35611 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
35612 }
35613 
35614 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
35615 {
35616 	USE_OPLINE
35617 	zend_free_op free_op_data1;
35618 	zval *var_ptr;
35619 	zval *value, *container, *dim;
35620 
35621 	SAVE_OPLINE();
35622 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
35623 
35624 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
35625 assign_dim_op_array:
35626 		SEPARATE_ARRAY(container);
35627 assign_dim_op_new_array:
35628 		if (IS_CONST == IS_UNUSED) {
35629 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
35630 			if (UNEXPECTED(!var_ptr)) {
35631 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
35632 				goto assign_dim_op_ret_null;
35633 			}
35634 		} else {
35635 			dim = EX_CONSTANT(opline->op2);
35636 
35637 			if (IS_CONST == IS_CONST) {
35638 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
35639 			} else {
35640 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
35641 			}
35642 			if (UNEXPECTED(!var_ptr)) {
35643 				goto assign_dim_op_ret_null;
35644 			}
35645 			ZVAL_DEREF(var_ptr);
35646 			SEPARATE_ZVAL_NOREF(var_ptr);
35647 		}
35648 
35649 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
35650 
35651 		binary_op(var_ptr, var_ptr, value);
35652 
35653 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35654 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
35655 		}
35656 	} else {
35657 		if (EXPECTED(Z_ISREF_P(container))) {
35658 			container = Z_REFVAL_P(container);
35659 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
35660 				goto assign_dim_op_array;
35661 			}
35662 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
35663 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
35664 assign_dim_op_convert_to_array:
35665 			ZVAL_NEW_ARR(container);
35666 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
35667 			goto assign_dim_op_new_array;
35668 		}
35669 
35670 		dim = EX_CONSTANT(opline->op2);
35671 
35672 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
35673 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
35674 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
35675 		} else {
35676 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
35677 				if (IS_CONST == IS_UNUSED) {
35678 					zend_throw_error(NULL, "[] operator not supported for strings");
35679 				} else {
35680 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
35681 					if (EXPECTED(EG(exception) == NULL)) {
35682 						zend_wrong_string_offset(EXECUTE_DATA_C);
35683 					}
35684 				}
35685 				UNDEF_RESULT();
35686 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
35687 				goto assign_dim_op_convert_to_array;
35688 			} else {
35689 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
35690 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
35691 				}
35692 assign_dim_op_ret_null:
35693 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35694 					ZVAL_NULL(EX_VAR(opline->result.var));
35695 				}
35696 			}
35697 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
35698 		}
35699 	}
35700 
35701 	FREE_OP(free_op_data1);
35702 
35703 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
35704 }
35705 
35706 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
35707 {
35708 	USE_OPLINE
35709 
35710 	zval *var_ptr;
35711 	zval *value;
35712 
35713 	SAVE_OPLINE();
35714 	value = EX_CONSTANT(opline->op2);
35715 	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
35716 
35717 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
35718 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35719 			ZVAL_NULL(EX_VAR(opline->result.var));
35720 		}
35721 	} else {
35722 		ZVAL_DEREF(var_ptr);
35723 		SEPARATE_ZVAL_NOREF(var_ptr);
35724 
35725 		binary_op(var_ptr, var_ptr, value);
35726 
35727 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
35728 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
35729 		}
35730 	}
35731 
35732 
35733 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
35734 }
35735 
35736 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
35737 {
35738 #if 1 && IS_CONST == IS_UNUSED
35739 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35740 #else
35741 # if 0 || IS_CV != IS_UNUSED
35742 	USE_OPLINE
35743 
35744 	if (EXPECTED(1)) {
35745 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35746 	}
35747 	if (EXPECTED(0)) {
35748 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35749 	}
35750 # endif
35751 
35752 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35753 #endif
35754 }
35755 
35756 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
35757 {
35758 #if 1 && IS_CONST == IS_UNUSED
35759 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35760 #else
35761 # if 0 || IS_CV != IS_UNUSED
35762 	USE_OPLINE
35763 
35764 	if (EXPECTED(0)) {
35765 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35766 	}
35767 	if (EXPECTED(1)) {
35768 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35769 	}
35770 # endif
35771 
35772 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35773 #endif
35774 }
35775 
35776 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
35777 {
35778 #if 1 && IS_CONST == IS_UNUSED
35779 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35780 #else
35781 # if 0 || IS_CV != IS_UNUSED
35782 	USE_OPLINE
35783 
35784 	if (EXPECTED(0)) {
35785 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35786 	}
35787 	if (EXPECTED(0)) {
35788 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35789 	}
35790 # endif
35791 
35792 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CONST(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35793 #endif
35794 }
35795 
35796 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35797 {
35798 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35799 }
35800 
35801 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35802 {
35803 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35804 }
35805 
35806 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35807 {
35808 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35809 }
35810 
35811 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35812 {
35813 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35814 }
35815 
35816 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35817 {
35818 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35819 }
35820 
35821 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35822 {
35823 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35824 }
35825 
35826 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35827 {
35828 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35829 }
35830 
35831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35832 {
35833 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35834 }
35835 
35836 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35837 {
35838 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35839 }
35840 
35841 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35842 {
35843 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35844 }
35845 
35846 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35847 {
35848 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35849 }
35850 
35851 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35852 {
35853 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35854 }
35855 
35856 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35857 {
35858 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35859 }
35860 
35861 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35862 {
35863 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35864 }
35865 
35866 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35867 {
35868 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35869 }
35870 
35871 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35872 {
35873 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35874 }
35875 
35876 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35877 {
35878 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35879 }
35880 
35881 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35882 {
35883 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35884 }
35885 
35886 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35887 {
35888 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35889 }
35890 
35891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35892 {
35893 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35894 }
35895 
35896 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35897 {
35898 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35899 }
35900 
35901 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35902 {
35903 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35904 }
35905 
35906 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35907 {
35908 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35909 }
35910 
35911 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35912 {
35913 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35914 }
35915 
35916 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35917 {
35918 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35919 }
35920 
35921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35922 {
35923 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35924 }
35925 
35926 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35927 {
35928 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35929 }
35930 
35931 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35932 {
35933 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35934 }
35935 
35936 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35937 {
35938 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35939 }
35940 
35941 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35942 {
35943 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35944 }
35945 
35946 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35947 {
35948 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35949 }
35950 
35951 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35952 {
35953 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35954 }
35955 
35956 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35957 {
35958 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35959 }
35960 
35961 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35962 {
35963 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35964 }
35965 
35966 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35967 {
35968 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35969 }
35970 
35971 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
35972 {
35973 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CONST_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
35974 }
35975 
35976 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
35977 {
35978 	USE_OPLINE
35979 
35980 	zval *object;
35981 	zval *property;
35982 	zval *zptr;
35983 
35984 	SAVE_OPLINE();
35985 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
35986 
35987 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
35988 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
35989 	}
35990 
35991 	property = EX_CONSTANT(opline->op2);
35992 
35993 	do {
35994 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
35995 			ZVAL_DEREF(object);
35996 			if (UNEXPECTED(!make_real_object(object))) {
35997 				zend_string *property_name = zval_get_string(property);
35998 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
35999 				zend_string_release(property_name);
36000 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36001 					ZVAL_NULL(EX_VAR(opline->result.var));
36002 				}
36003 				break;
36004 			}
36005 		}
36006 
36007 		/* here we are sure we are dealing with an object */
36008 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
36009 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
36010 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
36011 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36012 					ZVAL_NULL(EX_VAR(opline->result.var));
36013 				}
36014 			} else {
36015 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
36016 					if (inc) {
36017 						fast_long_increment_function(zptr);
36018 					} else {
36019 						fast_long_decrement_function(zptr);
36020 					}
36021 				} else {
36022 					ZVAL_DEREF(zptr);
36023 					SEPARATE_ZVAL_NOREF(zptr);
36024 
36025 					if (inc) {
36026 						increment_function(zptr);
36027 					} else {
36028 						decrement_function(zptr);
36029 					}
36030 				}
36031 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36032 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
36033 				}
36034 			}
36035 		} else {
36036 			zend_pre_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
36037 		}
36038 	} while (0);
36039 
36040 
36041 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36042 }
36043 
36044 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36045 {
36046 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36047 }
36048 
36049 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36050 {
36051 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36052 }
36053 
36054 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CONST(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
36055 {
36056 	USE_OPLINE
36057 
36058 	zval *object;
36059 	zval *property;
36060 	zval *zptr;
36061 
36062 	SAVE_OPLINE();
36063 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
36064 
36065 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
36066 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36067 	}
36068 
36069 	property = EX_CONSTANT(opline->op2);
36070 
36071 	do {
36072 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
36073 			ZVAL_DEREF(object);
36074 			if (UNEXPECTED(!make_real_object(object))) {
36075 				zend_string *property_name = zval_get_string(property);
36076 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
36077 				zend_string_release(property_name);
36078 				ZVAL_NULL(EX_VAR(opline->result.var));
36079 				break;
36080 			}
36081 		}
36082 
36083 		/* here we are sure we are dealing with an object */
36084 
36085 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
36086 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
36087 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
36088 				ZVAL_NULL(EX_VAR(opline->result.var));
36089 			} else {
36090 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
36091 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
36092 					if (inc) {
36093 						fast_long_increment_function(zptr);
36094 					} else {
36095 						fast_long_decrement_function(zptr);
36096 					}
36097 				} else {
36098 					ZVAL_DEREF(zptr);
36099 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
36100 					zval_opt_copy_ctor(zptr);
36101 					if (inc) {
36102 						increment_function(zptr);
36103 					} else {
36104 						decrement_function(zptr);
36105 					}
36106 				}
36107 			}
36108 		} else {
36109 			zend_post_incdec_overloaded_property(object, property, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
36110 		}
36111 	} while (0);
36112 
36113 
36114 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36115 }
36116 
36117 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36118 {
36119 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CONST(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36120 }
36121 
36122 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36123 {
36124 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CONST(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36125 }
36126 
36127 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
36128 {
36129 	USE_OPLINE
36130 
36131 	zval *varname;
36132 	zval *retval;
36133 
36134 	SAVE_OPLINE();
36135 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
36136 
36137 	retval = zend_fetch_static_property_address(varname, IS_CV, opline->op2, IS_CONST, type EXECUTE_DATA_CC);
36138 
36139 	if (UNEXPECTED(retval == NULL)) {
36140 		if (EG(exception)) {
36141 
36142 			ZVAL_UNDEF(EX_VAR(opline->result.var));
36143 			HANDLE_EXCEPTION();
36144 		} else {
36145 			ZEND_ASSERT(type == BP_VAR_IS);
36146 			retval = &EG(uninitialized_zval);
36147 		}
36148 	}
36149 
36150 	if (type == BP_VAR_R || type == BP_VAR_IS) {
36151 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
36152 	} else {
36153 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
36154 	}
36155 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36156 }
36157 
36158 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36159 {
36160 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36161 }
36162 
36163 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36164 {
36165 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36166 }
36167 
36168 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36169 {
36170 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36171 }
36172 
36173 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36174 {
36175 	USE_OPLINE
36176 
36177 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
36178 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36179 	} else {
36180 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36181 	}
36182 }
36183 
36184 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36185 {
36186 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36187 }
36188 
36189 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36190 {
36191 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_CONST(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
36192 }
36193 
36194 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36195 {
36196 	USE_OPLINE
36197 
36198 	zval *container, *dim, *value, *result;
36199 
36200 	SAVE_OPLINE();
36201 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
36202 	dim = EX_CONSTANT(opline->op2);
36203 	if (IS_CV != IS_CONST) {
36204 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
36205 fetch_dim_r_array:
36206 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
36207 			result = EX_VAR(opline->result.var);
36208 			ZVAL_COPY_UNREF(result, value);
36209 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
36210 			container = Z_REFVAL_P(container);
36211 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
36212 				goto fetch_dim_r_array;
36213 			} else {
36214 				goto fetch_dim_r_slow;
36215 			}
36216 		} else {
36217 fetch_dim_r_slow:
36218 			result = EX_VAR(opline->result.var);
36219 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
36220 		}
36221 	} else {
36222 		result = EX_VAR(opline->result.var);
36223 		zend_fetch_dimension_address_read_R(result, container, dim, IS_CONST EXECUTE_DATA_CC);
36224 	}
36225 
36226 
36227 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36228 }
36229 
36230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36231 {
36232 	USE_OPLINE
36233 	zend_free_op free_op1;
36234 	zval *container;
36235 
36236 	SAVE_OPLINE();
36237 	container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36238 
36239 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
36240 
36241 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36242 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36243 	}
36244 
36245 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36246 }
36247 
36248 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36249 {
36250 	USE_OPLINE
36251 	zend_free_op free_op1;
36252 	zval *container;
36253 
36254 	SAVE_OPLINE();
36255 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
36256 
36257 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
36258 
36259 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36260 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36261 	}
36262 
36263 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36264 }
36265 
36266 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36267 {
36268 	USE_OPLINE
36269 
36270 	zval *container;
36271 
36272 	SAVE_OPLINE();
36273 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
36274 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
36275 
36276 
36277 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36278 }
36279 
36280 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36281 {
36282 	USE_OPLINE
36283 	zval *container;
36284 	zend_free_op free_op1;
36285 
36286 	SAVE_OPLINE();
36287 
36288 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
36289         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
36290             zend_throw_error(NULL, "Cannot use temporary expression in write context");
36291 
36292 
36293 			ZVAL_UNDEF(EX_VAR(opline->result.var));
36294 			HANDLE_EXCEPTION();
36295         }
36296 		container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36297 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
36298 		if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36299 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36300 		}
36301 
36302 
36303 	} else {
36304 		if (IS_CONST == IS_UNUSED) {
36305 			zend_throw_error(NULL, "Cannot use [] for reading");
36306 
36307 
36308 			ZVAL_UNDEF(EX_VAR(opline->result.var));
36309 			HANDLE_EXCEPTION();
36310 		}
36311 		container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
36312 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
36313 
36314 
36315 	}
36316 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36317 }
36318 
36319 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36320 {
36321 	USE_OPLINE
36322 	zend_free_op free_op1;
36323 	zval *container;
36324 
36325 	SAVE_OPLINE();
36326 	container = _get_zval_ptr_cv_undef_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
36327 
36328 	zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
36329 
36330 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36331 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36332 	}
36333 
36334 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36335 }
36336 
36337 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36338 {
36339 	USE_OPLINE
36340 
36341 	zval *container;
36342 
36343 	zval *offset;
36344 
36345 	SAVE_OPLINE();
36346 	container = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
36347 
36348 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36349 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36350 	}
36351 
36352 	offset = EX_CONSTANT(opline->op2);
36353 
36354 	if (IS_CV == IS_CONST ||
36355 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
36356 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
36357 			container = Z_REFVAL_P(container);
36358 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
36359 				goto fetch_obj_r_no_object;
36360 			}
36361 		} else {
36362 			goto fetch_obj_r_no_object;
36363 		}
36364 	}
36365 
36366 	/* here we are sure we are dealing with an object */
36367 	do {
36368 		zend_object *zobj = Z_OBJ_P(container);
36369 		zval *retval;
36370 
36371 		if (IS_CONST == IS_CONST &&
36372 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
36373 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
36374 
36375 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
36376 				retval = OBJ_PROP(zobj, prop_offset);
36377 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
36378 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
36379 					break;
36380 				}
36381 			} else if (EXPECTED(zobj->properties != NULL)) {
36382 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
36383 				if (EXPECTED(retval)) {
36384 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
36385 					break;
36386 				}
36387 			}
36388 		}
36389 
36390 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
36391 			zend_string *property_name;
36392 fetch_obj_r_no_object:
36393 			property_name = zval_get_string(offset);
36394 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
36395 			zend_string_release(property_name);
36396 			ZVAL_NULL(EX_VAR(opline->result.var));
36397 		} else {
36398 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
36399 
36400 			if (retval != EX_VAR(opline->result.var)) {
36401 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
36402 			}
36403 		}
36404 	} while (0);
36405 
36406 
36407 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36408 }
36409 
36410 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36411 {
36412 	USE_OPLINE
36413 	zend_free_op free_op1;
36414 	zval *property;
36415 	zval *container;
36416 
36417 	SAVE_OPLINE();
36418 
36419 	container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36420 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36421 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36422 	}
36423 
36424 	property = EX_CONSTANT(opline->op2);
36425 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
36426 
36427 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36428 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36429 	}
36430 
36431 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36432 }
36433 
36434 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36435 {
36436 	USE_OPLINE
36437 	zend_free_op free_op1;
36438 	zval *property;
36439 	zval *container;
36440 
36441 	SAVE_OPLINE();
36442 	container = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
36443 
36444 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36445 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36446 	}
36447 	property = EX_CONSTANT(opline->op2);
36448 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
36449 
36450 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36451 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36452 	}
36453 
36454 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36455 }
36456 
36457 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36458 {
36459 	USE_OPLINE
36460 
36461 	zval *container;
36462 
36463 	zval *offset;
36464 
36465 	SAVE_OPLINE();
36466 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
36467 
36468 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36469 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36470 	}
36471 
36472 	offset  = EX_CONSTANT(opline->op2);
36473 
36474 	if (IS_CV == IS_CONST ||
36475 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
36476 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
36477 			container = Z_REFVAL_P(container);
36478 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
36479 				goto fetch_obj_is_no_object;
36480 			}
36481 		} else {
36482 			goto fetch_obj_is_no_object;
36483 		}
36484 	}
36485 
36486 	/* here we are sure we are dealing with an object */
36487 	do {
36488 		zend_object *zobj = Z_OBJ_P(container);
36489 		zval *retval;
36490 
36491 		if (IS_CONST == IS_CONST &&
36492 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
36493 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
36494 
36495 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
36496 				retval = OBJ_PROP(zobj, prop_offset);
36497 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
36498 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
36499 					break;
36500 				}
36501 			} else if (EXPECTED(zobj->properties != NULL)) {
36502 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
36503 				if (EXPECTED(retval)) {
36504 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
36505 					break;
36506 				}
36507 			}
36508 		}
36509 
36510 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
36511 fetch_obj_is_no_object:
36512 			ZVAL_NULL(EX_VAR(opline->result.var));
36513 		} else {
36514 
36515 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
36516 
36517 			if (retval != EX_VAR(opline->result.var)) {
36518 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
36519 			}
36520 		}
36521 	} while (0);
36522 
36523 
36524 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36525 }
36526 
36527 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36528 {
36529 	USE_OPLINE
36530 	zval *container;
36531 
36532 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
36533 		/* Behave like FETCH_OBJ_W */
36534 		zend_free_op free_op1;
36535 		zval *property;
36536 
36537 		SAVE_OPLINE();
36538 		container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36539 
36540 		if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36541 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36542 		}
36543 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
36544 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
36545 
36546 
36547 			ZVAL_UNDEF(EX_VAR(opline->result.var));
36548 			HANDLE_EXCEPTION();
36549 		}
36550 		property = EX_CONSTANT(opline->op2);
36551 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
36552 
36553 		if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36554 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36555 		}
36556 
36557 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36558 	} else {
36559 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36560 	}
36561 }
36562 
36563 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36564 {
36565 	USE_OPLINE
36566 	zend_free_op free_op1;
36567 	zval *container, *property;
36568 
36569 	SAVE_OPLINE();
36570 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
36571 
36572 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
36573 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36574 	}
36575 
36576 	property = EX_CONSTANT(opline->op2);
36577 
36578 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CONST, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
36579 
36580 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
36581 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
36582 	}
36583 
36584 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36585 }
36586 
36587 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36588 {
36589 	USE_OPLINE
36590 
36591 	zval *container;
36592 
36593 	SAVE_OPLINE();
36594 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
36595 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2) EXECUTE_DATA_CC);
36596 
36597 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
36598 }
36599 
36600 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36601 {
36602 	USE_OPLINE
36603 
36604 	zval *object, *property, *value, tmp;
36605 
36606 	SAVE_OPLINE();
36607 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36608 
36609 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
36610 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36611 	}
36612 
36613 	property = EX_CONSTANT(opline->op2);
36614 	value = EX_CONSTANT((opline+1)->op1);
36615 
36616 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
36617 		do {
36618 			if (Z_ISREF_P(object)) {
36619 				object = Z_REFVAL_P(object);
36620 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
36621 					break;
36622 				}
36623 			}
36624 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
36625 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
36626 				zend_object *obj;
36627 
36628 				zval_ptr_dtor(object);
36629 				object_init(object);
36630 				Z_ADDREF_P(object);
36631 				obj = Z_OBJ_P(object);
36632 				zend_error(E_WARNING, "Creating default object from empty value");
36633 				if (GC_REFCOUNT(obj) == 1) {
36634 					/* the enclosing container was deleted, obj is unreferenced */
36635 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36636 						ZVAL_NULL(EX_VAR(opline->result.var));
36637 					}
36638 
36639 					OBJ_RELEASE(obj);
36640 					goto exit_assign_obj;
36641 				}
36642 				Z_DELREF_P(object);
36643 			} else {
36644 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
36645 					zend_string *property_name = zval_get_string(property);
36646 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
36647 					zend_string_release(property_name);
36648 				}
36649 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36650 					ZVAL_NULL(EX_VAR(opline->result.var));
36651 				}
36652 
36653 				goto exit_assign_obj;
36654 			}
36655 		} while (0);
36656 	}
36657 
36658 	if (IS_CONST == IS_CONST &&
36659 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
36660 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
36661 		zend_object *zobj = Z_OBJ_P(object);
36662 		zval *property_val;
36663 
36664 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
36665 			property_val = OBJ_PROP(zobj, prop_offset);
36666 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
36667 fast_assign_obj:
36668 				value = zend_assign_to_variable(property_val, value, IS_CONST);
36669 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36670 					ZVAL_COPY(EX_VAR(opline->result.var), value);
36671 				}
36672 				goto exit_assign_obj;
36673 			}
36674 		} else {
36675 			if (EXPECTED(zobj->properties != NULL)) {
36676 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
36677 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
36678 						GC_REFCOUNT(zobj->properties)--;
36679 					}
36680 					zobj->properties = zend_array_dup(zobj->properties);
36681 				}
36682 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
36683 				if (property_val) {
36684 					goto fast_assign_obj;
36685 				}
36686 			}
36687 
36688 			if (!zobj->ce->__set) {
36689 
36690 				if (EXPECTED(zobj->properties == NULL)) {
36691 					rebuild_object_properties(zobj);
36692 				}
36693 				if (IS_CONST == IS_CONST) {
36694 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
36695 						Z_ADDREF_P(value);
36696 					}
36697 				} else if (IS_CONST != IS_TMP_VAR) {
36698 					if (Z_ISREF_P(value)) {
36699 						if (IS_CONST == IS_VAR) {
36700 							zend_reference *ref = Z_REF_P(value);
36701 							if (--GC_REFCOUNT(ref) == 0) {
36702 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
36703 								efree_size(ref, sizeof(zend_reference));
36704 								value = &tmp;
36705 							} else {
36706 								value = Z_REFVAL_P(value);
36707 								if (Z_REFCOUNTED_P(value)) {
36708 									Z_ADDREF_P(value);
36709 								}
36710 							}
36711 						} else {
36712 							value = Z_REFVAL_P(value);
36713 							if (Z_REFCOUNTED_P(value)) {
36714 								Z_ADDREF_P(value);
36715 							}
36716 						}
36717 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
36718 						Z_ADDREF_P(value);
36719 					}
36720 				}
36721 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
36722 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36723 					ZVAL_COPY(EX_VAR(opline->result.var), value);
36724 				}
36725 				goto exit_assign_obj;
36726 			}
36727 		}
36728 	}
36729 
36730 	if (!Z_OBJ_HT_P(object)->write_property) {
36731 		zend_string *property_name = zval_get_string(property);
36732 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
36733 		zend_string_release(property_name);
36734 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36735 			ZVAL_NULL(EX_VAR(opline->result.var));
36736 		}
36737 
36738 		goto exit_assign_obj;
36739 	}
36740 
36741 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
36742 		ZVAL_DEREF(value);
36743 	}
36744 
36745 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
36746 
36747 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36748 		ZVAL_COPY(EX_VAR(opline->result.var), value);
36749 	}
36750 
36751 exit_assign_obj:
36752 
36753 
36754 	/* assign_obj has two opcodes! */
36755 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
36756 }
36757 
36758 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36759 {
36760 	USE_OPLINE
36761 	zend_free_op free_op_data;
36762 	zval *object, *property, *value, tmp;
36763 
36764 	SAVE_OPLINE();
36765 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36766 
36767 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
36768 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36769 	}
36770 
36771 	property = EX_CONSTANT(opline->op2);
36772 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
36773 
36774 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
36775 		do {
36776 			if (Z_ISREF_P(object)) {
36777 				object = Z_REFVAL_P(object);
36778 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
36779 					break;
36780 				}
36781 			}
36782 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
36783 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
36784 				zend_object *obj;
36785 
36786 				zval_ptr_dtor(object);
36787 				object_init(object);
36788 				Z_ADDREF_P(object);
36789 				obj = Z_OBJ_P(object);
36790 				zend_error(E_WARNING, "Creating default object from empty value");
36791 				if (GC_REFCOUNT(obj) == 1) {
36792 					/* the enclosing container was deleted, obj is unreferenced */
36793 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36794 						ZVAL_NULL(EX_VAR(opline->result.var));
36795 					}
36796 					zval_ptr_dtor_nogc(free_op_data);
36797 					OBJ_RELEASE(obj);
36798 					goto exit_assign_obj;
36799 				}
36800 				Z_DELREF_P(object);
36801 			} else {
36802 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
36803 					zend_string *property_name = zval_get_string(property);
36804 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
36805 					zend_string_release(property_name);
36806 				}
36807 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36808 					ZVAL_NULL(EX_VAR(opline->result.var));
36809 				}
36810 				zval_ptr_dtor_nogc(free_op_data);
36811 				goto exit_assign_obj;
36812 			}
36813 		} while (0);
36814 	}
36815 
36816 	if (IS_CONST == IS_CONST &&
36817 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
36818 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
36819 		zend_object *zobj = Z_OBJ_P(object);
36820 		zval *property_val;
36821 
36822 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
36823 			property_val = OBJ_PROP(zobj, prop_offset);
36824 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
36825 fast_assign_obj:
36826 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
36827 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36828 					ZVAL_COPY(EX_VAR(opline->result.var), value);
36829 				}
36830 				goto exit_assign_obj;
36831 			}
36832 		} else {
36833 			if (EXPECTED(zobj->properties != NULL)) {
36834 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
36835 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
36836 						GC_REFCOUNT(zobj->properties)--;
36837 					}
36838 					zobj->properties = zend_array_dup(zobj->properties);
36839 				}
36840 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
36841 				if (property_val) {
36842 					goto fast_assign_obj;
36843 				}
36844 			}
36845 
36846 			if (!zobj->ce->__set) {
36847 
36848 				if (EXPECTED(zobj->properties == NULL)) {
36849 					rebuild_object_properties(zobj);
36850 				}
36851 				if (IS_TMP_VAR == IS_CONST) {
36852 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
36853 						Z_ADDREF_P(value);
36854 					}
36855 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
36856 					if (Z_ISREF_P(value)) {
36857 						if (IS_TMP_VAR == IS_VAR) {
36858 							zend_reference *ref = Z_REF_P(value);
36859 							if (--GC_REFCOUNT(ref) == 0) {
36860 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
36861 								efree_size(ref, sizeof(zend_reference));
36862 								value = &tmp;
36863 							} else {
36864 								value = Z_REFVAL_P(value);
36865 								if (Z_REFCOUNTED_P(value)) {
36866 									Z_ADDREF_P(value);
36867 								}
36868 							}
36869 						} else {
36870 							value = Z_REFVAL_P(value);
36871 							if (Z_REFCOUNTED_P(value)) {
36872 								Z_ADDREF_P(value);
36873 							}
36874 						}
36875 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
36876 						Z_ADDREF_P(value);
36877 					}
36878 				}
36879 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
36880 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36881 					ZVAL_COPY(EX_VAR(opline->result.var), value);
36882 				}
36883 				goto exit_assign_obj;
36884 			}
36885 		}
36886 	}
36887 
36888 	if (!Z_OBJ_HT_P(object)->write_property) {
36889 		zend_string *property_name = zval_get_string(property);
36890 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
36891 		zend_string_release(property_name);
36892 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36893 			ZVAL_NULL(EX_VAR(opline->result.var));
36894 		}
36895 		zval_ptr_dtor_nogc(free_op_data);
36896 		goto exit_assign_obj;
36897 	}
36898 
36899 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
36900 		ZVAL_DEREF(value);
36901 	}
36902 
36903 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
36904 
36905 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36906 		ZVAL_COPY(EX_VAR(opline->result.var), value);
36907 	}
36908 	zval_ptr_dtor_nogc(free_op_data);
36909 exit_assign_obj:
36910 
36911 
36912 	/* assign_obj has two opcodes! */
36913 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
36914 }
36915 
36916 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
36917 {
36918 	USE_OPLINE
36919 	zend_free_op free_op_data;
36920 	zval *object, *property, *value, tmp;
36921 
36922 	SAVE_OPLINE();
36923 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
36924 
36925 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
36926 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
36927 	}
36928 
36929 	property = EX_CONSTANT(opline->op2);
36930 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
36931 
36932 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
36933 		do {
36934 			if (Z_ISREF_P(object)) {
36935 				object = Z_REFVAL_P(object);
36936 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
36937 					break;
36938 				}
36939 			}
36940 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
36941 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
36942 				zend_object *obj;
36943 
36944 				zval_ptr_dtor(object);
36945 				object_init(object);
36946 				Z_ADDREF_P(object);
36947 				obj = Z_OBJ_P(object);
36948 				zend_error(E_WARNING, "Creating default object from empty value");
36949 				if (GC_REFCOUNT(obj) == 1) {
36950 					/* the enclosing container was deleted, obj is unreferenced */
36951 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36952 						ZVAL_NULL(EX_VAR(opline->result.var));
36953 					}
36954 					zval_ptr_dtor_nogc(free_op_data);
36955 					OBJ_RELEASE(obj);
36956 					goto exit_assign_obj;
36957 				}
36958 				Z_DELREF_P(object);
36959 			} else {
36960 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
36961 					zend_string *property_name = zval_get_string(property);
36962 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
36963 					zend_string_release(property_name);
36964 				}
36965 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36966 					ZVAL_NULL(EX_VAR(opline->result.var));
36967 				}
36968 				zval_ptr_dtor_nogc(free_op_data);
36969 				goto exit_assign_obj;
36970 			}
36971 		} while (0);
36972 	}
36973 
36974 	if (IS_CONST == IS_CONST &&
36975 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
36976 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
36977 		zend_object *zobj = Z_OBJ_P(object);
36978 		zval *property_val;
36979 
36980 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
36981 			property_val = OBJ_PROP(zobj, prop_offset);
36982 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
36983 fast_assign_obj:
36984 				value = zend_assign_to_variable(property_val, value, IS_VAR);
36985 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
36986 					ZVAL_COPY(EX_VAR(opline->result.var), value);
36987 				}
36988 				goto exit_assign_obj;
36989 			}
36990 		} else {
36991 			if (EXPECTED(zobj->properties != NULL)) {
36992 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
36993 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
36994 						GC_REFCOUNT(zobj->properties)--;
36995 					}
36996 					zobj->properties = zend_array_dup(zobj->properties);
36997 				}
36998 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
36999 				if (property_val) {
37000 					goto fast_assign_obj;
37001 				}
37002 			}
37003 
37004 			if (!zobj->ce->__set) {
37005 
37006 				if (EXPECTED(zobj->properties == NULL)) {
37007 					rebuild_object_properties(zobj);
37008 				}
37009 				if (IS_VAR == IS_CONST) {
37010 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
37011 						Z_ADDREF_P(value);
37012 					}
37013 				} else if (IS_VAR != IS_TMP_VAR) {
37014 					if (Z_ISREF_P(value)) {
37015 						if (IS_VAR == IS_VAR) {
37016 							zend_reference *ref = Z_REF_P(value);
37017 							if (--GC_REFCOUNT(ref) == 0) {
37018 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
37019 								efree_size(ref, sizeof(zend_reference));
37020 								value = &tmp;
37021 							} else {
37022 								value = Z_REFVAL_P(value);
37023 								if (Z_REFCOUNTED_P(value)) {
37024 									Z_ADDREF_P(value);
37025 								}
37026 							}
37027 						} else {
37028 							value = Z_REFVAL_P(value);
37029 							if (Z_REFCOUNTED_P(value)) {
37030 								Z_ADDREF_P(value);
37031 							}
37032 						}
37033 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
37034 						Z_ADDREF_P(value);
37035 					}
37036 				}
37037 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
37038 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37039 					ZVAL_COPY(EX_VAR(opline->result.var), value);
37040 				}
37041 				goto exit_assign_obj;
37042 			}
37043 		}
37044 	}
37045 
37046 	if (!Z_OBJ_HT_P(object)->write_property) {
37047 		zend_string *property_name = zval_get_string(property);
37048 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
37049 		zend_string_release(property_name);
37050 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37051 			ZVAL_NULL(EX_VAR(opline->result.var));
37052 		}
37053 		zval_ptr_dtor_nogc(free_op_data);
37054 		goto exit_assign_obj;
37055 	}
37056 
37057 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
37058 		ZVAL_DEREF(value);
37059 	}
37060 
37061 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
37062 
37063 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37064 		ZVAL_COPY(EX_VAR(opline->result.var), value);
37065 	}
37066 	zval_ptr_dtor_nogc(free_op_data);
37067 exit_assign_obj:
37068 
37069 
37070 	/* assign_obj has two opcodes! */
37071 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
37072 }
37073 
37074 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37075 {
37076 	USE_OPLINE
37077 
37078 	zval *object, *property, *value, tmp;
37079 
37080 	SAVE_OPLINE();
37081 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37082 
37083 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
37084 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
37085 	}
37086 
37087 	property = EX_CONSTANT(opline->op2);
37088 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
37089 
37090 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
37091 		do {
37092 			if (Z_ISREF_P(object)) {
37093 				object = Z_REFVAL_P(object);
37094 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
37095 					break;
37096 				}
37097 			}
37098 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
37099 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
37100 				zend_object *obj;
37101 
37102 				zval_ptr_dtor(object);
37103 				object_init(object);
37104 				Z_ADDREF_P(object);
37105 				obj = Z_OBJ_P(object);
37106 				zend_error(E_WARNING, "Creating default object from empty value");
37107 				if (GC_REFCOUNT(obj) == 1) {
37108 					/* the enclosing container was deleted, obj is unreferenced */
37109 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37110 						ZVAL_NULL(EX_VAR(opline->result.var));
37111 					}
37112 
37113 					OBJ_RELEASE(obj);
37114 					goto exit_assign_obj;
37115 				}
37116 				Z_DELREF_P(object);
37117 			} else {
37118 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
37119 					zend_string *property_name = zval_get_string(property);
37120 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
37121 					zend_string_release(property_name);
37122 				}
37123 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37124 					ZVAL_NULL(EX_VAR(opline->result.var));
37125 				}
37126 
37127 				goto exit_assign_obj;
37128 			}
37129 		} while (0);
37130 	}
37131 
37132 	if (IS_CONST == IS_CONST &&
37133 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
37134 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
37135 		zend_object *zobj = Z_OBJ_P(object);
37136 		zval *property_val;
37137 
37138 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
37139 			property_val = OBJ_PROP(zobj, prop_offset);
37140 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
37141 fast_assign_obj:
37142 				value = zend_assign_to_variable(property_val, value, IS_CV);
37143 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37144 					ZVAL_COPY(EX_VAR(opline->result.var), value);
37145 				}
37146 				goto exit_assign_obj;
37147 			}
37148 		} else {
37149 			if (EXPECTED(zobj->properties != NULL)) {
37150 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
37151 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
37152 						GC_REFCOUNT(zobj->properties)--;
37153 					}
37154 					zobj->properties = zend_array_dup(zobj->properties);
37155 				}
37156 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
37157 				if (property_val) {
37158 					goto fast_assign_obj;
37159 				}
37160 			}
37161 
37162 			if (!zobj->ce->__set) {
37163 
37164 				if (EXPECTED(zobj->properties == NULL)) {
37165 					rebuild_object_properties(zobj);
37166 				}
37167 				if (IS_CV == IS_CONST) {
37168 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
37169 						Z_ADDREF_P(value);
37170 					}
37171 				} else if (IS_CV != IS_TMP_VAR) {
37172 					if (Z_ISREF_P(value)) {
37173 						if (IS_CV == IS_VAR) {
37174 							zend_reference *ref = Z_REF_P(value);
37175 							if (--GC_REFCOUNT(ref) == 0) {
37176 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
37177 								efree_size(ref, sizeof(zend_reference));
37178 								value = &tmp;
37179 							} else {
37180 								value = Z_REFVAL_P(value);
37181 								if (Z_REFCOUNTED_P(value)) {
37182 									Z_ADDREF_P(value);
37183 								}
37184 							}
37185 						} else {
37186 							value = Z_REFVAL_P(value);
37187 							if (Z_REFCOUNTED_P(value)) {
37188 								Z_ADDREF_P(value);
37189 							}
37190 						}
37191 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
37192 						Z_ADDREF_P(value);
37193 					}
37194 				}
37195 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
37196 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37197 					ZVAL_COPY(EX_VAR(opline->result.var), value);
37198 				}
37199 				goto exit_assign_obj;
37200 			}
37201 		}
37202 	}
37203 
37204 	if (!Z_OBJ_HT_P(object)->write_property) {
37205 		zend_string *property_name = zval_get_string(property);
37206 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
37207 		zend_string_release(property_name);
37208 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37209 			ZVAL_NULL(EX_VAR(opline->result.var));
37210 		}
37211 
37212 		goto exit_assign_obj;
37213 	}
37214 
37215 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
37216 		ZVAL_DEREF(value);
37217 	}
37218 
37219 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
37220 
37221 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37222 		ZVAL_COPY(EX_VAR(opline->result.var), value);
37223 	}
37224 
37225 exit_assign_obj:
37226 
37227 
37228 	/* assign_obj has two opcodes! */
37229 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
37230 }
37231 
37232 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37233 {
37234 	USE_OPLINE
37235 
37236 	zval *object_ptr;
37237 
37238 	zval *value;
37239 	zval *variable_ptr;
37240 	zval *dim;
37241 
37242 	SAVE_OPLINE();
37243 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37244 
37245 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37246 try_assign_dim_array:
37247 		SEPARATE_ARRAY(object_ptr);
37248 		if (IS_CONST == IS_UNUSED) {
37249 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
37250 			if (UNEXPECTED(variable_ptr == NULL)) {
37251 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
37252 				goto assign_dim_error;
37253 			}
37254 		} else {
37255 			dim = EX_CONSTANT(opline->op2);
37256 			if (IS_CONST == IS_CONST) {
37257 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37258 			} else {
37259 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37260 			}
37261 			if (UNEXPECTED(variable_ptr == NULL)) {
37262 				goto assign_dim_error;
37263 			}
37264 		}
37265 		value = EX_CONSTANT((opline+1)->op1);
37266 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
37267 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37268 			ZVAL_COPY(EX_VAR(opline->result.var), value);
37269 		}
37270 	} else {
37271 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
37272 			object_ptr = Z_REFVAL_P(object_ptr);
37273 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37274 				goto try_assign_dim_array;
37275 			}
37276 		}
37277 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
37278 			dim = EX_CONSTANT(opline->op2);
37279 			value = EX_CONSTANT((opline+1)->op1);
37280 
37281 			zend_assign_to_object_dim(object_ptr, dim, value);
37282 
37283 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37284 				ZVAL_COPY(EX_VAR(opline->result.var), value);
37285 			}
37286 
37287 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
37288 			if (IS_CONST == IS_UNUSED) {
37289 				zend_throw_error(NULL, "[] operator not supported for strings");
37290 
37291 
37292 				UNDEF_RESULT();
37293 				HANDLE_EXCEPTION();
37294 			} else {
37295 				dim = EX_CONSTANT(opline->op2);
37296 				value = EX_CONSTANT((opline+1)->op1);
37297 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
37298 
37299 			}
37300 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
37301 			ZVAL_NEW_ARR(object_ptr);
37302 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
37303 			goto try_assign_dim_array;
37304 		} else {
37305 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
37306 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
37307 			}
37308 			dim = EX_CONSTANT(opline->op2);
37309 assign_dim_error:
37310 
37311 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37312 				ZVAL_NULL(EX_VAR(opline->result.var));
37313 			}
37314 		}
37315 	}
37316 	if (IS_CONST != IS_UNUSED) {
37317 
37318 	}
37319 
37320 	/* assign_dim has two opcodes! */
37321 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
37322 }
37323 
37324 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37325 {
37326 	USE_OPLINE
37327 
37328 	zval *object_ptr;
37329 	zend_free_op free_op_data;
37330 	zval *value;
37331 	zval *variable_ptr;
37332 	zval *dim;
37333 
37334 	SAVE_OPLINE();
37335 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37336 
37337 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37338 try_assign_dim_array:
37339 		SEPARATE_ARRAY(object_ptr);
37340 		if (IS_CONST == IS_UNUSED) {
37341 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
37342 			if (UNEXPECTED(variable_ptr == NULL)) {
37343 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
37344 				goto assign_dim_error;
37345 			}
37346 		} else {
37347 			dim = EX_CONSTANT(opline->op2);
37348 			if (IS_CONST == IS_CONST) {
37349 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37350 			} else {
37351 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37352 			}
37353 			if (UNEXPECTED(variable_ptr == NULL)) {
37354 				goto assign_dim_error;
37355 			}
37356 		}
37357 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
37358 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
37359 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37360 			ZVAL_COPY(EX_VAR(opline->result.var), value);
37361 		}
37362 	} else {
37363 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
37364 			object_ptr = Z_REFVAL_P(object_ptr);
37365 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37366 				goto try_assign_dim_array;
37367 			}
37368 		}
37369 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
37370 			dim = EX_CONSTANT(opline->op2);
37371 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
37372 
37373 			zend_assign_to_object_dim(object_ptr, dim, value);
37374 
37375 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37376 				ZVAL_COPY(EX_VAR(opline->result.var), value);
37377 			}
37378 
37379 			zval_ptr_dtor_nogc(free_op_data);
37380 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
37381 			if (IS_CONST == IS_UNUSED) {
37382 				zend_throw_error(NULL, "[] operator not supported for strings");
37383 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
37384 
37385 				UNDEF_RESULT();
37386 				HANDLE_EXCEPTION();
37387 			} else {
37388 				dim = EX_CONSTANT(opline->op2);
37389 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
37390 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
37391 				zval_ptr_dtor_nogc(free_op_data);
37392 			}
37393 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
37394 			ZVAL_NEW_ARR(object_ptr);
37395 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
37396 			goto try_assign_dim_array;
37397 		} else {
37398 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
37399 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
37400 			}
37401 			dim = EX_CONSTANT(opline->op2);
37402 assign_dim_error:
37403 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
37404 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37405 				ZVAL_NULL(EX_VAR(opline->result.var));
37406 			}
37407 		}
37408 	}
37409 	if (IS_CONST != IS_UNUSED) {
37410 
37411 	}
37412 
37413 	/* assign_dim has two opcodes! */
37414 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
37415 }
37416 
37417 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37418 {
37419 	USE_OPLINE
37420 
37421 	zval *object_ptr;
37422 	zend_free_op free_op_data;
37423 	zval *value;
37424 	zval *variable_ptr;
37425 	zval *dim;
37426 
37427 	SAVE_OPLINE();
37428 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37429 
37430 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37431 try_assign_dim_array:
37432 		SEPARATE_ARRAY(object_ptr);
37433 		if (IS_CONST == IS_UNUSED) {
37434 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
37435 			if (UNEXPECTED(variable_ptr == NULL)) {
37436 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
37437 				goto assign_dim_error;
37438 			}
37439 		} else {
37440 			dim = EX_CONSTANT(opline->op2);
37441 			if (IS_CONST == IS_CONST) {
37442 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37443 			} else {
37444 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37445 			}
37446 			if (UNEXPECTED(variable_ptr == NULL)) {
37447 				goto assign_dim_error;
37448 			}
37449 		}
37450 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
37451 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
37452 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37453 			ZVAL_COPY(EX_VAR(opline->result.var), value);
37454 		}
37455 	} else {
37456 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
37457 			object_ptr = Z_REFVAL_P(object_ptr);
37458 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37459 				goto try_assign_dim_array;
37460 			}
37461 		}
37462 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
37463 			dim = EX_CONSTANT(opline->op2);
37464 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
37465 
37466 			zend_assign_to_object_dim(object_ptr, dim, value);
37467 
37468 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37469 				ZVAL_COPY(EX_VAR(opline->result.var), value);
37470 			}
37471 
37472 			zval_ptr_dtor_nogc(free_op_data);
37473 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
37474 			if (IS_CONST == IS_UNUSED) {
37475 				zend_throw_error(NULL, "[] operator not supported for strings");
37476 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
37477 
37478 				UNDEF_RESULT();
37479 				HANDLE_EXCEPTION();
37480 			} else {
37481 				dim = EX_CONSTANT(opline->op2);
37482 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
37483 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
37484 				zval_ptr_dtor_nogc(free_op_data);
37485 			}
37486 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
37487 			ZVAL_NEW_ARR(object_ptr);
37488 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
37489 			goto try_assign_dim_array;
37490 		} else {
37491 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
37492 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
37493 			}
37494 			dim = EX_CONSTANT(opline->op2);
37495 assign_dim_error:
37496 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
37497 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37498 				ZVAL_NULL(EX_VAR(opline->result.var));
37499 			}
37500 		}
37501 	}
37502 	if (IS_CONST != IS_UNUSED) {
37503 
37504 	}
37505 
37506 	/* assign_dim has two opcodes! */
37507 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
37508 }
37509 
37510 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37511 {
37512 	USE_OPLINE
37513 
37514 	zval *object_ptr;
37515 
37516 	zval *value;
37517 	zval *variable_ptr;
37518 	zval *dim;
37519 
37520 	SAVE_OPLINE();
37521 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37522 
37523 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37524 try_assign_dim_array:
37525 		SEPARATE_ARRAY(object_ptr);
37526 		if (IS_CONST == IS_UNUSED) {
37527 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
37528 			if (UNEXPECTED(variable_ptr == NULL)) {
37529 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
37530 				goto assign_dim_error;
37531 			}
37532 		} else {
37533 			dim = EX_CONSTANT(opline->op2);
37534 			if (IS_CONST == IS_CONST) {
37535 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37536 			} else {
37537 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
37538 			}
37539 			if (UNEXPECTED(variable_ptr == NULL)) {
37540 				goto assign_dim_error;
37541 			}
37542 		}
37543 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
37544 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
37545 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37546 			ZVAL_COPY(EX_VAR(opline->result.var), value);
37547 		}
37548 	} else {
37549 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
37550 			object_ptr = Z_REFVAL_P(object_ptr);
37551 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
37552 				goto try_assign_dim_array;
37553 			}
37554 		}
37555 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
37556 			dim = EX_CONSTANT(opline->op2);
37557 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
37558 
37559 			zend_assign_to_object_dim(object_ptr, dim, value);
37560 
37561 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37562 				ZVAL_COPY(EX_VAR(opline->result.var), value);
37563 			}
37564 
37565 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
37566 			if (IS_CONST == IS_UNUSED) {
37567 				zend_throw_error(NULL, "[] operator not supported for strings");
37568 
37569 
37570 				UNDEF_RESULT();
37571 				HANDLE_EXCEPTION();
37572 			} else {
37573 				dim = EX_CONSTANT(opline->op2);
37574 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
37575 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
37576 
37577 			}
37578 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
37579 			ZVAL_NEW_ARR(object_ptr);
37580 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
37581 			goto try_assign_dim_array;
37582 		} else {
37583 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
37584 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
37585 			}
37586 			dim = EX_CONSTANT(opline->op2);
37587 assign_dim_error:
37588 
37589 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
37590 				ZVAL_NULL(EX_VAR(opline->result.var));
37591 			}
37592 		}
37593 	}
37594 	if (IS_CONST != IS_UNUSED) {
37595 
37596 	}
37597 
37598 	/* assign_dim has two opcodes! */
37599 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
37600 }
37601 
37602 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37603 {
37604 	USE_OPLINE
37605 
37606 	zval *value;
37607 	zval *variable_ptr;
37608 
37609 	SAVE_OPLINE();
37610 	value = EX_CONSTANT(opline->op2);
37611 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37612 
37613 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
37614 
37615 		if (UNEXPECTED(0)) {
37616 			ZVAL_NULL(EX_VAR(opline->result.var));
37617 		}
37618 	} else {
37619 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
37620 		if (UNEXPECTED(0)) {
37621 			ZVAL_COPY(EX_VAR(opline->result.var), value);
37622 		}
37623 
37624 		/* zend_assign_to_variable() always takes care of op2, never free it! */
37625 	}
37626 
37627 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37628 }
37629 
37630 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37631 {
37632 	USE_OPLINE
37633 
37634 	zval *value;
37635 	zval *variable_ptr;
37636 
37637 	SAVE_OPLINE();
37638 	value = EX_CONSTANT(opline->op2);
37639 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37640 
37641 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
37642 
37643 		if (UNEXPECTED(1)) {
37644 			ZVAL_NULL(EX_VAR(opline->result.var));
37645 		}
37646 	} else {
37647 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
37648 		if (UNEXPECTED(1)) {
37649 			ZVAL_COPY(EX_VAR(opline->result.var), value);
37650 		}
37651 
37652 		/* zend_assign_to_variable() always takes care of op2, never free it! */
37653 	}
37654 
37655 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37656 }
37657 
37658 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37659 {
37660 	USE_OPLINE
37661 
37662 	zval *op1, *op2;
37663 	zend_string *op1_str, *op2_str, *str;
37664 
37665 
37666 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
37667 	op2 = EX_CONSTANT(opline->op2);
37668 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
37669 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
37670 		zend_string *op1_str = Z_STR_P(op1);
37671 		zend_string *op2_str = Z_STR_P(op2);
37672 		zend_string *str;
37673 
37674 		do {
37675 			if (IS_CV != IS_CONST) {
37676 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
37677 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
37678 
37679 					break;
37680 				}
37681 			}
37682 			if (IS_CONST != IS_CONST) {
37683 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
37684 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
37685 
37686 					break;
37687 				}
37688 			}
37689 			if (IS_CV != IS_CONST && IS_CV != IS_CV &&
37690 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
37691 			    size_t len = ZSTR_LEN(op1_str);
37692 
37693 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
37694 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
37695 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
37696 				break;
37697 			} else {
37698 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
37699 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
37700 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
37701 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
37702 			}
37703 
37704 		} while (0);
37705 
37706 		ZEND_VM_NEXT_OPCODE();
37707 	}
37708 
37709 	SAVE_OPLINE();
37710 	if (IS_CV == IS_CONST) {
37711 		op1_str = Z_STR_P(op1);
37712 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
37713 		op1_str = zend_string_copy(Z_STR_P(op1));
37714 	} else {
37715 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
37716 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
37717 		}
37718 		op1_str = _zval_get_string_func(op1);
37719 	}
37720 	if (IS_CONST == IS_CONST) {
37721 		op2_str = Z_STR_P(op2);
37722 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
37723 		op2_str = zend_string_copy(Z_STR_P(op2));
37724 	} else {
37725 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
37726 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
37727 		}
37728 		op2_str = _zval_get_string_func(op2);
37729 	}
37730 	do {
37731 		if (IS_CV != IS_CONST) {
37732 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
37733 				if (IS_CONST == IS_CONST) {
37734 					zend_string_addref(op2_str);
37735 				}
37736 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
37737 				zend_string_release(op1_str);
37738 				break;
37739 			}
37740 		}
37741 		if (IS_CONST != IS_CONST) {
37742 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
37743 				if (IS_CV == IS_CONST) {
37744 					zend_string_addref(op1_str);
37745 				}
37746 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
37747 				zend_string_release(op2_str);
37748 				break;
37749 			}
37750 		}
37751 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
37752 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
37753 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
37754 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
37755 		if (IS_CV != IS_CONST) {
37756 			zend_string_release(op1_str);
37757 		}
37758 		if (IS_CONST != IS_CONST) {
37759 			zend_string_release(op2_str);
37760 		}
37761 	} while (0);
37762 
37763 
37764 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37765 }
37766 
37767 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37768 {
37769 	USE_OPLINE
37770 	zval *function_name;
37771 
37772 	zval *object;
37773 	zend_function *fbc;
37774 	zend_class_entry *called_scope;
37775 	zend_object *obj;
37776 	zend_execute_data *call;
37777 	uint32_t call_info;
37778 
37779 	SAVE_OPLINE();
37780 
37781 	object = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
37782 
37783 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
37784 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
37785 	}
37786 
37787 	function_name = EX_CONSTANT(opline->op2);
37788 
37789 	if (IS_CONST != IS_CONST &&
37790 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
37791 		do {
37792 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
37793 				function_name = Z_REFVAL_P(function_name);
37794 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
37795 					break;
37796 				}
37797 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
37798 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
37799 				if (UNEXPECTED(EG(exception) != NULL)) {
37800 
37801 					HANDLE_EXCEPTION();
37802 				}
37803 			}
37804 			zend_throw_error(NULL, "Method name must be a string");
37805 
37806 
37807 			HANDLE_EXCEPTION();
37808 		} while (0);
37809 	}
37810 
37811 	if (IS_CV != IS_UNUSED) {
37812 		do {
37813 			if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
37814 				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
37815 					object = Z_REFVAL_P(object);
37816 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
37817 						break;
37818 					}
37819 				}
37820 				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
37821 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
37822 					if (UNEXPECTED(EG(exception) != NULL)) {
37823 
37824 						HANDLE_EXCEPTION();
37825 					}
37826 				}
37827 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
37828 
37829 
37830 				HANDLE_EXCEPTION();
37831 			}
37832 		} while (0);
37833 	}
37834 
37835 	obj = Z_OBJ_P(object);
37836 	called_scope = obj->ce;
37837 
37838 	if (IS_CONST == IS_CONST &&
37839 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
37840 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
37841 	} else {
37842 	    zend_object *orig_obj = obj;
37843 
37844 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
37845 			zend_throw_error(NULL, "Object does not support method calls");
37846 
37847 
37848 			HANDLE_EXCEPTION();
37849 		}
37850 
37851 		/* First, locate the function. */
37852 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
37853 		if (UNEXPECTED(fbc == NULL)) {
37854 			if (EXPECTED(!EG(exception))) {
37855 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
37856 			}
37857 
37858 
37859 			HANDLE_EXCEPTION();
37860 		}
37861 		if (IS_CONST == IS_CONST &&
37862 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
37863 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
37864 		    EXPECTED(obj == orig_obj)) {
37865 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
37866 		}
37867 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
37868 			init_func_run_time_cache(&fbc->op_array);
37869 		}
37870 	}
37871 
37872 	call_info = ZEND_CALL_NESTED_FUNCTION;
37873 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
37874 		obj = NULL;
37875 	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
37876 		/* CV may be changed indirectly (e.g. when it's a reference) */
37877 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
37878 		GC_REFCOUNT(obj)++; /* For $this pointer */
37879 	}
37880 
37881 
37882 	if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
37883 		HANDLE_EXCEPTION();
37884 	}
37885 
37886 	call = zend_vm_stack_push_call_frame(call_info,
37887 		fbc, opline->extended_value, called_scope, obj);
37888 	call->prev_execute_data = EX(call);
37889 	EX(call) = call;
37890 
37891 	ZEND_VM_NEXT_OPCODE();
37892 }
37893 
37894 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37895 {
37896 	USE_OPLINE
37897 
37898 	zval *op1, *op2, *result;
37899 
37900 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
37901 	op2 = EX_CONSTANT(opline->op2);
37902 	do {
37903 		int result;
37904 
37905 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
37906 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
37907 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
37908 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
37909 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
37910 			} else {
37911 				break;
37912 			}
37913 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
37914 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
37915 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
37916 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
37917 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
37918 			} else {
37919 				break;
37920 			}
37921 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
37922 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
37923 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
37924 					result = 1;
37925 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
37926 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
37927 						result = 0;
37928 					} else {
37929 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
37930 					}
37931 				} else {
37932 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
37933 				}
37934 
37935 			} else {
37936 				break;
37937 			}
37938 		} else {
37939 			break;
37940 		}
37941 		ZEND_VM_SMART_BRANCH(result, 0);
37942 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
37943 		ZEND_VM_NEXT_OPCODE();
37944 	} while (0);
37945 
37946 	SAVE_OPLINE();
37947 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
37948 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
37949 	}
37950 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
37951 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
37952 	}
37953 	result = EX_VAR(opline->result.var);
37954 	compare_function(result, op1, op2);
37955 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
37956 
37957 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
37958 }
37959 
37960 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
37961 {
37962 	USE_OPLINE
37963 
37964 	zval *expr_ptr, new_expr;
37965 
37966 	SAVE_OPLINE();
37967 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
37968 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
37969 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
37970 		ZVAL_MAKE_REF(expr_ptr);
37971 		Z_ADDREF_P(expr_ptr);
37972 
37973 	} else {
37974 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
37975 		if (IS_CV == IS_TMP_VAR) {
37976 			/* pass */
37977 		} else if (IS_CV == IS_CONST) {
37978 			if (Z_REFCOUNTED_P(expr_ptr)) {
37979 				Z_ADDREF_P(expr_ptr);
37980 			}
37981 		} else if (IS_CV == IS_CV) {
37982 			ZVAL_DEREF(expr_ptr);
37983 			if (Z_REFCOUNTED_P(expr_ptr)) {
37984 				Z_ADDREF_P(expr_ptr);
37985 			}
37986 		} else /* if (IS_CV == IS_VAR) */ {
37987 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
37988 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
37989 
37990 				expr_ptr = Z_REFVAL_P(expr_ptr);
37991 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
37992 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
37993 					expr_ptr = &new_expr;
37994 					efree_size(ref, sizeof(zend_reference));
37995 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
37996 					Z_ADDREF_P(expr_ptr);
37997 				}
37998 			}
37999 		}
38000 	}
38001 
38002 	if (IS_CONST != IS_UNUSED) {
38003 
38004 		zval *offset = EX_CONSTANT(opline->op2);
38005 		zend_string *str;
38006 		zend_ulong hval;
38007 
38008 add_again:
38009 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
38010 			str = Z_STR_P(offset);
38011 			if (IS_CONST != IS_CONST) {
38012 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
38013 					goto num_index;
38014 				}
38015 			}
38016 str_index:
38017 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
38018 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
38019 			hval = Z_LVAL_P(offset);
38020 num_index:
38021 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
38022 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
38023 			offset = Z_REFVAL_P(offset);
38024 			goto add_again;
38025 		} else if (Z_TYPE_P(offset) == IS_NULL) {
38026 			str = ZSTR_EMPTY_ALLOC();
38027 			goto str_index;
38028 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
38029 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
38030 			goto num_index;
38031 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
38032 			hval = 0;
38033 			goto num_index;
38034 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
38035 			hval = 1;
38036 			goto num_index;
38037 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
38038 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
38039 			str = ZSTR_EMPTY_ALLOC();
38040 			goto str_index;
38041 		} else {
38042 			zend_error(E_WARNING, "Illegal offset type");
38043 			zval_ptr_dtor(expr_ptr);
38044 		}
38045 
38046 	} else {
38047 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
38048 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
38049 			zval_ptr_dtor(expr_ptr);
38050 		}
38051 	}
38052 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38053 }
38054 
38055 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38056 {
38057 	zval *array;
38058 	uint32_t size;
38059 	USE_OPLINE
38060 
38061 	array = EX_VAR(opline->result.var);
38062 	if (IS_CV != IS_UNUSED) {
38063 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
38064 	} else {
38065 		size = 0;
38066 	}
38067 	ZVAL_NEW_ARR(array);
38068 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
38069 
38070 	if (IS_CV != IS_UNUSED) {
38071 		/* Explicitly initialize array as not-packed if flag is set */
38072 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
38073 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
38074 		}
38075 	}
38076 
38077 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
38078 }
38079 
38080 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38081 {
38082 	USE_OPLINE
38083 	zval tmp, *varname;
38084 	zend_class_entry *ce;
38085 
38086 
38087 	SAVE_OPLINE();
38088 
38089 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
38090 
38091 	ZVAL_UNDEF(&tmp);
38092 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
38093 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
38094 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
38095 		}
38096 		ZVAL_STR(&tmp, zval_get_string(varname));
38097 		varname = &tmp;
38098 	}
38099 
38100 	if (IS_CONST == IS_CONST) {
38101 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
38102 		if (UNEXPECTED(ce == NULL)) {
38103 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
38104 			if (UNEXPECTED(ce == NULL)) {
38105 				ZEND_ASSERT(EG(exception));
38106 				if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
38107 					zend_string_release(Z_STR(tmp));
38108 				}
38109 
38110 				HANDLE_EXCEPTION();
38111 			}
38112 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
38113 		}
38114 	} else if (IS_CONST == IS_UNUSED) {
38115 		ce = zend_fetch_class(NULL, opline->op2.num);
38116 		if (UNEXPECTED(ce == NULL)) {
38117 			ZEND_ASSERT(EG(exception));
38118 			if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
38119 				zend_string_release(Z_STR(tmp));
38120 			}
38121 
38122 			HANDLE_EXCEPTION();
38123 		}
38124 	} else {
38125 		ce = Z_CE_P(EX_VAR(opline->op2.var));
38126 	}
38127 	zend_std_unset_static_property(ce, Z_STR_P(varname));
38128 
38129 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
38130 		zend_string_release(Z_STR(tmp));
38131 	}
38132 
38133 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38134 }
38135 
38136 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38137 {
38138 	USE_OPLINE
38139 
38140 	zval *container;
38141 	zval *offset;
38142 	zend_ulong hval;
38143 	zend_string *key;
38144 
38145 	SAVE_OPLINE();
38146 	container = _get_zval_ptr_cv_undef_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
38147 	offset = EX_CONSTANT(opline->op2);
38148 
38149 	do {
38150 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
38151 			HashTable *ht;
38152 
38153 unset_dim_array:
38154 			SEPARATE_ARRAY(container);
38155 			ht = Z_ARRVAL_P(container);
38156 offset_again:
38157 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
38158 				key = Z_STR_P(offset);
38159 				if (IS_CONST != IS_CONST) {
38160 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
38161 						goto num_index_dim;
38162 					}
38163 				}
38164 str_index_dim:
38165 				if (ht == &EG(symbol_table)) {
38166 					zend_delete_global_variable(key);
38167 				} else {
38168 					zend_hash_del(ht, key);
38169 				}
38170 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
38171 				hval = Z_LVAL_P(offset);
38172 num_index_dim:
38173 				zend_hash_index_del(ht, hval);
38174 			} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
38175 				offset = Z_REFVAL_P(offset);
38176 				goto offset_again;
38177 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
38178 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
38179 				goto num_index_dim;
38180 			} else if (Z_TYPE_P(offset) == IS_NULL) {
38181 				key = ZSTR_EMPTY_ALLOC();
38182 				goto str_index_dim;
38183 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
38184 				hval = 0;
38185 				goto num_index_dim;
38186 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
38187 				hval = 1;
38188 				goto num_index_dim;
38189 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
38190 				hval = Z_RES_HANDLE_P(offset);
38191 				goto num_index_dim;
38192 			} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
38193 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
38194 				key = ZSTR_EMPTY_ALLOC();
38195 				goto str_index_dim;
38196 			} else {
38197 				zend_error(E_WARNING, "Illegal offset type in unset");
38198 			}
38199 			break;
38200 		} else if (Z_ISREF_P(container)) {
38201 			container = Z_REFVAL_P(container);
38202 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
38203 				goto unset_dim_array;
38204 			}
38205 		}
38206 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
38207 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
38208 		}
38209 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
38210 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
38211 		}
38212 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
38213 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
38214 				zend_throw_error(NULL, "Cannot use object as array");
38215 			} else {
38216 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
38217 			}
38218 		} else if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
38219 			zend_throw_error(NULL, "Cannot unset string offsets");
38220 		}
38221 	} while (0);
38222 
38223 
38224 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38225 }
38226 
38227 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38228 {
38229 	USE_OPLINE
38230 
38231 	zval *container;
38232 	zval *offset;
38233 
38234 	SAVE_OPLINE();
38235 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
38236 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
38237 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
38238 	}
38239 	offset = EX_CONSTANT(opline->op2);
38240 
38241 	do {
38242 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
38243 			if (Z_ISREF_P(container)) {
38244 				container = Z_REFVAL_P(container);
38245 				if (Z_TYPE_P(container) != IS_OBJECT) {
38246 					break;
38247 				}
38248 			} else {
38249 				break;
38250 			}
38251 		}
38252 		if (Z_OBJ_HT_P(container)->unset_property) {
38253 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
38254 		} else {
38255 			zend_string *property_name = zval_get_string(offset);
38256 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
38257 			zend_string_release(property_name);
38258 		}
38259 	} while (0);
38260 
38261 
38262 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38263 }
38264 
38265 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38266 {
38267 	USE_OPLINE
38268 	zval *value;
38269 	int result;
38270 
38271 	zval tmp, *varname;
38272 	zend_class_entry *ce;
38273 
38274 	SAVE_OPLINE();
38275 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
38276 	ZVAL_UNDEF(&tmp);
38277 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
38278 		ZVAL_STR(&tmp, zval_get_string(varname));
38279 		varname = &tmp;
38280 	}
38281 
38282 	if (IS_CONST == IS_CONST) {
38283 		if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
38284 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
38285 
38286 			/* check if static properties were destoyed */
38287 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
38288 				value = NULL;
38289 			}
38290 
38291 			goto is_static_prop_return;
38292 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
38293 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
38294 			if (UNEXPECTED(ce == NULL)) {
38295 				ZEND_ASSERT(EG(exception));
38296 				ZVAL_UNDEF(EX_VAR(opline->result.var));
38297 				HANDLE_EXCEPTION();
38298 			}
38299 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
38300 		}
38301 	} else {
38302 		if (IS_CONST == IS_UNUSED) {
38303 			ce = zend_fetch_class(NULL, opline->op2.num);
38304 			if (UNEXPECTED(ce == NULL)) {
38305 				ZEND_ASSERT(EG(exception));
38306 				if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
38307 					zend_string_release(Z_STR(tmp));
38308 				}
38309 
38310 				ZVAL_UNDEF(EX_VAR(opline->result.var));
38311 				HANDLE_EXCEPTION();
38312 			}
38313 		} else {
38314 			ce = Z_CE_P(EX_VAR(opline->op2.var));
38315 		}
38316 		if (IS_CV == IS_CONST &&
38317 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
38318 
38319 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
38320 
38321 			/* check if static properties were destoyed */
38322 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
38323 				value = NULL;
38324 			}
38325 
38326 			goto is_static_prop_return;
38327 		}
38328 	}
38329 
38330 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
38331 
38332 	if (IS_CV == IS_CONST && value) {
38333 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
38334 	}
38335 
38336 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
38337 		zend_string_release(Z_STR(tmp));
38338 	}
38339 
38340 is_static_prop_return:
38341 	if (opline->extended_value & ZEND_ISSET) {
38342 		result = value && Z_TYPE_P(value) > IS_NULL &&
38343 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
38344 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
38345 		result = !value || !i_zend_is_true(value);
38346 	}
38347 
38348 	ZEND_VM_SMART_BRANCH(result, 1);
38349 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
38350 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38351 }
38352 
38353 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38354 {
38355 	USE_OPLINE
38356 
38357 	zval *container;
38358 	int result;
38359 	zend_ulong hval;
38360 	zval *offset;
38361 
38362 	SAVE_OPLINE();
38363 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
38364 	offset = EX_CONSTANT(opline->op2);
38365 
38366 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
38367 		HashTable *ht;
38368 		zval *value;
38369 		zend_string *str;
38370 
38371 isset_dim_obj_array:
38372 		ht = Z_ARRVAL_P(container);
38373 isset_again:
38374 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
38375 			str = Z_STR_P(offset);
38376 			if (IS_CONST != IS_CONST) {
38377 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
38378 					goto num_index_prop;
38379 				}
38380 			}
38381 str_index_prop:
38382 			value = zend_hash_find_ind(ht, str);
38383 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
38384 			hval = Z_LVAL_P(offset);
38385 num_index_prop:
38386 			value = zend_hash_index_find(ht, hval);
38387 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
38388 			offset = Z_REFVAL_P(offset);
38389 			goto isset_again;
38390 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
38391 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
38392 			goto num_index_prop;
38393 		} else if (Z_TYPE_P(offset) == IS_NULL) {
38394 			str = ZSTR_EMPTY_ALLOC();
38395 			goto str_index_prop;
38396 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
38397 			hval = 0;
38398 			goto num_index_prop;
38399 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
38400 			hval = 1;
38401 			goto num_index_prop;
38402 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
38403 			hval = Z_RES_HANDLE_P(offset);
38404 			goto num_index_prop;
38405 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
38406 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
38407 			str = ZSTR_EMPTY_ALLOC();
38408 			goto str_index_prop;
38409 		} else {
38410 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
38411 			goto isset_not_found;
38412 		}
38413 
38414 		if (opline->extended_value & ZEND_ISSET) {
38415 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
38416 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
38417 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
38418 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
38419 			result = (value == NULL || !i_zend_is_true(value));
38420 		}
38421 		goto isset_dim_obj_exit;
38422 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
38423 		container = Z_REFVAL_P(container);
38424 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
38425 			goto isset_dim_obj_array;
38426 		}
38427 	}
38428 
38429 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
38430 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
38431 	}
38432 
38433 	if ((IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
38434 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
38435 			result =
38436 				((opline->extended_value & ZEND_ISSET) == 0) ^
38437 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
38438 		} else {
38439 			zend_error(E_NOTICE, "Trying to check element of non-array");
38440 			goto isset_not_found;
38441 		}
38442 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
38443 		zend_long lval;
38444 
38445 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
38446 			lval = Z_LVAL_P(offset);
38447 isset_str_offset:
38448 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
38449 				lval += (zend_long)Z_STRLEN_P(container);
38450 			}
38451 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
38452 				if (opline->extended_value & ZEND_ISSET) {
38453 					result = 1;
38454 				} else {
38455 					result = (Z_STRVAL_P(container)[lval] == '0');
38456 				}
38457 			} else {
38458 				goto isset_not_found;
38459 			}
38460 		} else {
38461 			if (IS_CONST & (IS_CV|IS_VAR)) {
38462 				ZVAL_DEREF(offset);
38463 			}
38464 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
38465 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
38466 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
38467 				lval = zval_get_long(offset);
38468 				goto isset_str_offset;
38469 			}
38470 			goto isset_not_found;
38471 		}
38472 	} else {
38473 isset_not_found:
38474 		result = ((opline->extended_value & ZEND_ISSET) == 0);
38475 	}
38476 
38477 isset_dim_obj_exit:
38478 
38479 
38480 	ZEND_VM_SMART_BRANCH(result, 1);
38481 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
38482 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38483 }
38484 
38485 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38486 {
38487 	USE_OPLINE
38488 
38489 	zval *container;
38490 	int result;
38491 	zval *offset;
38492 
38493 	SAVE_OPLINE();
38494 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
38495 
38496 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
38497 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
38498 	}
38499 
38500 	offset = EX_CONSTANT(opline->op2);
38501 
38502 	if (IS_CV == IS_CONST ||
38503 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
38504 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
38505 			container = Z_REFVAL_P(container);
38506 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
38507 				goto isset_no_object;
38508 			}
38509 		} else {
38510 			goto isset_no_object;
38511 		}
38512 	}
38513 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
38514 		zend_string *property_name = zval_get_string(offset);
38515 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
38516 		zend_string_release(property_name);
38517 isset_no_object:
38518 		result = ((opline->extended_value & ZEND_ISSET) == 0);
38519 	} else {
38520 		result =
38521 			((opline->extended_value & ZEND_ISSET) == 0) ^
38522 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
38523 	}
38524 
38525 
38526 	ZEND_VM_SMART_BRANCH(result, 1);
38527 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
38528 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38529 }
38530 
38531 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38532 {
38533 	USE_OPLINE
38534 
38535 	zval *expr;
38536 	zend_bool result;
38537 
38538 	SAVE_OPLINE();
38539 	expr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
38540 
38541 try_instanceof:
38542 	if (Z_TYPE_P(expr) == IS_OBJECT) {
38543 		zend_class_entry *ce;
38544 
38545 		if (IS_CONST == IS_CONST) {
38546 			ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
38547 			if (UNEXPECTED(ce == NULL)) {
38548 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
38549 				if (EXPECTED(ce)) {
38550 					CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
38551 				}
38552 			}
38553 		} else if (IS_CONST == IS_UNUSED) {
38554 			ce = zend_fetch_class(NULL, opline->op2.num);
38555 			if (UNEXPECTED(ce == NULL)) {
38556 				ZEND_ASSERT(EG(exception));
38557 
38558 				ZVAL_UNDEF(EX_VAR(opline->result.var));
38559 				HANDLE_EXCEPTION();
38560 			}
38561 		} else {
38562 			ce = Z_CE_P(EX_VAR(opline->op2.var));
38563 		}
38564 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
38565 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
38566 		expr = Z_REFVAL_P(expr);
38567 		goto try_instanceof;
38568 	} else {
38569 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
38570 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
38571 		}
38572 		result = 0;
38573 	}
38574 
38575 	ZEND_VM_SMART_BRANCH(result, 1);
38576 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
38577 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38578 }
38579 
38580 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38581 {
38582 	USE_OPLINE
38583 
38584 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
38585 
38586 	SAVE_OPLINE();
38587 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
38588 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
38589 
38590 
38591 		UNDEF_RESULT();
38592 		HANDLE_EXCEPTION();
38593 	}
38594 
38595 	/* Destroy the previously yielded value */
38596 	zval_ptr_dtor(&generator->value);
38597 
38598 	/* Destroy the previously yielded key */
38599 	zval_ptr_dtor(&generator->key);
38600 
38601 	/* Set the new yielded value */
38602 	if (IS_CV != IS_UNUSED) {
38603 
38604 
38605 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
38606 			/* Constants and temporary variables aren't yieldable by reference,
38607 			 * but we still allow them with a notice. */
38608 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
38609 				zval *value;
38610 
38611 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
38612 
38613 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38614 				ZVAL_COPY_VALUE(&generator->value, value);
38615 				if (IS_CV == IS_CONST) {
38616 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
38617 						Z_ADDREF(generator->value);
38618 					}
38619 				}
38620 			} else {
38621 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
38622 
38623 				/* If a function call result is yielded and the function did
38624 				 * not return by reference we throw a notice. */
38625 				if (IS_CV == IS_VAR &&
38626 				    (value_ptr == &EG(uninitialized_zval) ||
38627 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
38628 				      !Z_ISREF_P(value_ptr)))) {
38629 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
38630 				} else {
38631 					ZVAL_MAKE_REF(value_ptr);
38632 				}
38633 				ZVAL_COPY(&generator->value, value_ptr);
38634 
38635 			}
38636 		} else {
38637 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38638 
38639 			/* Consts, temporary variables and references need copying */
38640 			if (IS_CV == IS_CONST) {
38641 				ZVAL_COPY_VALUE(&generator->value, value);
38642 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
38643 					Z_ADDREF(generator->value);
38644 				}
38645 			} else if (IS_CV == IS_TMP_VAR) {
38646 				ZVAL_COPY_VALUE(&generator->value, value);
38647             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
38648 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
38649 
38650 			} else {
38651 				ZVAL_COPY_VALUE(&generator->value, value);
38652 				if (IS_CV == IS_CV) {
38653 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
38654 				}
38655 			}
38656 		}
38657 	} else {
38658 		/* If no value was specified yield null */
38659 		ZVAL_NULL(&generator->value);
38660 	}
38661 
38662 	/* Set the new yielded key */
38663 	if (IS_CONST != IS_UNUSED) {
38664 
38665 		zval *key = EX_CONSTANT(opline->op2);
38666 
38667 		/* Consts, temporary variables and references need copying */
38668 		if (IS_CONST == IS_CONST) {
38669 			ZVAL_COPY_VALUE(&generator->key, key);
38670 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
38671 				Z_ADDREF(generator->key);
38672 			}
38673 		} else if (IS_CONST == IS_TMP_VAR) {
38674 			ZVAL_COPY_VALUE(&generator->key, key);
38675 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
38676 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
38677 
38678 		} else {
38679 			ZVAL_COPY_VALUE(&generator->key, key);
38680 			if (IS_CONST == IS_CV) {
38681 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
38682 			}
38683 		}
38684 
38685 		if (Z_TYPE(generator->key) == IS_LONG
38686 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
38687 		) {
38688 			generator->largest_used_integer_key = Z_LVAL(generator->key);
38689 		}
38690 	} else {
38691 		/* If no key was specified we use auto-increment keys */
38692 		generator->largest_used_integer_key++;
38693 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
38694 	}
38695 
38696 	if (RETURN_VALUE_USED(opline)) {
38697 		/* If the return value of yield is used set the send
38698 		 * target and initialize it to NULL */
38699 		generator->send_target = EX_VAR(opline->result.var);
38700 		ZVAL_NULL(generator->send_target);
38701 	} else {
38702 		generator->send_target = NULL;
38703 	}
38704 
38705 	/* We increment to the next op, so we are at the correct position when the
38706 	 * generator is resumed. */
38707 	ZEND_VM_INC_OPCODE();
38708 
38709 	/* The GOTO VM uses a local opline variable. We need to set the opline
38710 	 * variable in execute_data so we don't resume at an old position. */
38711 	SAVE_OPLINE();
38712 
38713 	ZEND_VM_RETURN();
38714 }
38715 
38716 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38717 {
38718 	USE_OPLINE
38719 
38720 	zval *varname;
38721 	zval *value;
38722 	zval *variable_ptr;
38723 	uint32_t idx;
38724 	zend_reference *ref;
38725 
38726 	ZEND_VM_REPEATABLE_OPCODE
38727 
38728 	varname = EX_CONSTANT(opline->op2);
38729 
38730 	/* We store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
38731 	idx = (uint32_t)(uintptr_t)CACHED_PTR(Z_CACHE_SLOT_P(varname)) - 1;
38732 	if (EXPECTED(idx < EG(symbol_table).nNumUsed)) {
38733 		Bucket *p = EG(symbol_table).arData + idx;
38734 
38735 		if (EXPECTED(Z_TYPE(p->val) != IS_UNDEF) &&
38736 	        (EXPECTED(p->key == Z_STR_P(varname)) ||
38737 	         (EXPECTED(p->h == ZSTR_H(Z_STR_P(varname))) &&
38738 	          EXPECTED(p->key != NULL) &&
38739 	          EXPECTED(ZSTR_LEN(p->key) == Z_STRLEN_P(varname)) &&
38740 	          EXPECTED(memcmp(ZSTR_VAL(p->key), Z_STRVAL_P(varname), Z_STRLEN_P(varname)) == 0)))) {
38741 
38742 			value = &EG(symbol_table).arData[idx].val;
38743 			goto check_indirect;
38744 		}
38745 	}
38746 
38747 	value = zend_hash_find(&EG(symbol_table), Z_STR_P(varname));
38748 	if (UNEXPECTED(value == NULL)) {
38749 		value = zend_hash_add_new(&EG(symbol_table), Z_STR_P(varname), &EG(uninitialized_zval));
38750 		idx = ((char*)value - (char*)EG(symbol_table).arData) / sizeof(Bucket);
38751 		/* Store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
38752 		CACHE_PTR(Z_CACHE_SLOT_P(varname), (void*)(uintptr_t)(idx + 1));
38753 	} else {
38754 		idx = ((char*)value - (char*)EG(symbol_table).arData) / sizeof(Bucket);
38755 		/* Store "hash slot index" + 1 (NULL is a mark of uninitialized cache slot) */
38756 		CACHE_PTR(Z_CACHE_SLOT_P(varname), (void*)(uintptr_t)(idx + 1));
38757 check_indirect:
38758 		/* GLOBAL variable may be an INDIRECT pointer to CV */
38759 		if (UNEXPECTED(Z_TYPE_P(value) == IS_INDIRECT)) {
38760 			value = Z_INDIRECT_P(value);
38761 			if (UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
38762 				ZVAL_NULL(value);
38763 			}
38764 		}
38765 	}
38766 
38767 	if (UNEXPECTED(!Z_ISREF_P(value))) {
38768 		ref = (zend_reference*)emalloc(sizeof(zend_reference));
38769 		GC_REFCOUNT(ref) = 2;
38770 		GC_TYPE_INFO(ref) = IS_REFERENCE;
38771 		ZVAL_COPY_VALUE(&ref->val, value);
38772 		Z_REF_P(value) = ref;
38773 		Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
38774 	} else {
38775 		ref = Z_REF_P(value);
38776 		GC_REFCOUNT(ref)++;
38777 	}
38778 
38779 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
38780 
38781 	if (UNEXPECTED(Z_REFCOUNTED_P(variable_ptr))) {
38782 		zend_refcounted *ref = Z_COUNTED_P(variable_ptr);
38783 		uint32_t refcnt = --GC_REFCOUNT(ref);
38784 
38785 		if (EXPECTED(variable_ptr != value)) {
38786 			if (refcnt == 0) {
38787 				SAVE_OPLINE();
38788 				zval_dtor_func(ref);
38789 				if (UNEXPECTED(EG(exception))) {
38790 					ZVAL_NULL(variable_ptr);
38791 					HANDLE_EXCEPTION();
38792 				}
38793 			} else {
38794 				gc_check_possible_root(ref);
38795 			}
38796 		}
38797 	}
38798 	ZVAL_REF(variable_ptr, ref);
38799 
38800 	ZEND_VM_REPEAT_OPCODE(ZEND_BIND_GLOBAL);
38801 	ZEND_VM_NEXT_OPCODE();
38802 }
38803 
38804 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BIND_STATIC_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38805 {
38806 	USE_OPLINE
38807 
38808 	HashTable *ht;
38809 	zval *varname;
38810 	zval *value;
38811 	zval *variable_ptr;
38812 
38813 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
38814 	zval_ptr_dtor(variable_ptr);
38815 
38816 	ht = EX(func)->op_array.static_variables;
38817 	ZEND_ASSERT(ht != NULL);
38818 	if (GC_REFCOUNT(ht) > 1) {
38819 		if (!(GC_FLAGS(ht) & IS_ARRAY_IMMUTABLE)) {
38820 			GC_REFCOUNT(ht)--;
38821 		}
38822 		EX(func)->op_array.static_variables = ht = zend_array_dup(ht);
38823 	}
38824 
38825 	varname = EX_CONSTANT(opline->op2);
38826 	value = zend_hash_find(ht, Z_STR_P(varname));
38827 
38828 	if (opline->extended_value) {
38829 		if (Z_CONSTANT_P(value)) {
38830 			SAVE_OPLINE();
38831 			if (UNEXPECTED(zval_update_constant_ex(value, EX(func)->op_array.scope) != SUCCESS)) {
38832 				ZVAL_NULL(variable_ptr);
38833 				HANDLE_EXCEPTION();
38834 			}
38835 		}
38836 		if (UNEXPECTED(!Z_ISREF_P(value))) {
38837 			zend_reference *ref = (zend_reference*)emalloc(sizeof(zend_reference));
38838 			GC_REFCOUNT(ref) = 2;
38839 			GC_TYPE_INFO(ref) = IS_REFERENCE;
38840 			ZVAL_COPY_VALUE(&ref->val, value);
38841 			Z_REF_P(value) = ref;
38842 			Z_TYPE_INFO_P(value) = IS_REFERENCE_EX;
38843 			ZVAL_REF(variable_ptr, ref);
38844 		} else {
38845 			Z_ADDREF_P(value);
38846 			ZVAL_REF(variable_ptr, Z_REF_P(value));
38847 		}
38848 	} else {
38849 		ZVAL_COPY(variable_ptr, value);
38850 	}
38851 
38852 	ZEND_VM_NEXT_OPCODE();
38853 }
38854 
38855 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38856 {
38857 	USE_OPLINE
38858 
38859 	zval *op, *jump_zv;
38860 	HashTable *jumptable;
38861 
38862 	op = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
38863 	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
38864 
38865 	if (Z_TYPE_P(op) != IS_LONG) {
38866 		ZVAL_DEREF(op);
38867 		if (Z_TYPE_P(op) != IS_LONG) {
38868 			/* Wrong type, fall back to ZEND_CASE chain */
38869 			ZEND_VM_NEXT_OPCODE();
38870 		}
38871 	}
38872 
38873 	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op));
38874 	if (jump_zv != NULL) {
38875 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
38876 		ZEND_VM_CONTINUE();
38877 	} else {
38878 		/* default */
38879 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
38880 		ZEND_VM_CONTINUE();
38881 	}
38882 }
38883 
38884 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38885 {
38886 	USE_OPLINE
38887 
38888 	zval *op, *jump_zv;
38889 	HashTable *jumptable;
38890 
38891 	op = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
38892 	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
38893 
38894 	if (Z_TYPE_P(op) != IS_STRING) {
38895 		ZVAL_DEREF(op);
38896 		if (Z_TYPE_P(op) != IS_STRING) {
38897 			/* Wrong type, fall back to ZEND_CASE chain */
38898 			ZEND_VM_NEXT_OPCODE();
38899 		}
38900 	}
38901 
38902 	jump_zv = zend_hash_find(jumptable, Z_STR_P(op));
38903 	if (jump_zv != NULL) {
38904 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
38905 		ZEND_VM_CONTINUE();
38906 	} else {
38907 		/* default */
38908 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
38909 		ZEND_VM_CONTINUE();
38910 	}
38911 }
38912 
38913 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IN_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38914 {
38915 	USE_OPLINE
38916 
38917 	zval *op1;
38918 	HashTable *ht = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
38919 	int result;
38920 
38921 	SAVE_OPLINE();
38922 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
38923 	if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
38924 		result = zend_hash_exists(ht, Z_STR_P(op1));
38925 	} else if (opline->extended_value) {
38926 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
38927 			result = zend_hash_index_exists(ht, Z_LVAL_P(op1));
38928 		} else {
38929 			result = 0;
38930 		}
38931 	} else if (Z_TYPE_P(op1) <= IS_FALSE) {
38932 		result = zend_hash_exists(ht, ZSTR_EMPTY_ALLOC());
38933 	} else {
38934 		zend_string *key;
38935 		zval key_tmp, result_tmp;
38936 
38937 		result = 0;
38938 		ZEND_HASH_FOREACH_STR_KEY(ht, key) {
38939 			ZVAL_STR(&key_tmp, key);
38940 			compare_function(&result_tmp, op1, &key_tmp);
38941 			if (Z_LVAL(result_tmp) == 0) {
38942 				result = 1;
38943 				break;
38944 			}
38945 		} ZEND_HASH_FOREACH_END();
38946 	}
38947 
38948 	ZEND_VM_SMART_BRANCH(result, 1);
38949 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
38950 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38951 }
38952 
38953 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
38954 {
38955 	USE_OPLINE
38956 
38957 	zval *container, *dim, *value;
38958 	zend_long offset;
38959 
38960 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
38961 	dim = EX_CONSTANT(opline->op2);
38962 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
38963 fetch_dim_r_index_array:
38964 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
38965 			offset = Z_LVAL_P(dim);
38966 		} else {
38967 			offset = zval_get_long(dim);
38968 		}
38969 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
38970 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
38971 		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
38972 			SAVE_OPLINE();
38973 
38974 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38975 		} else {
38976 			ZEND_VM_NEXT_OPCODE();
38977 		}
38978 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
38979 		container = Z_REFVAL_P(container);
38980 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
38981 			goto fetch_dim_r_index_array;
38982 		} else {
38983 			goto fetch_dim_r_index_slow;
38984 		}
38985 	} else {
38986 fetch_dim_r_index_slow:
38987 		SAVE_OPLINE();
38988 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
38989 
38990 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38991 	}
38992 
38993 fetch_dim_r_index_undef:
38994 	ZVAL_NULL(EX_VAR(opline->result.var));
38995 	SAVE_OPLINE();
38996 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
38997 
38998 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
38999 }
39000 
39001 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39002 {
39003 	USE_OPLINE
39004 	zend_free_op free_op2;
39005 	zval *op1, *op2;
39006 	int result;
39007 
39008 	SAVE_OPLINE();
39009 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39010 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39011 	result = fast_is_identical_function(op1, op2);
39012 
39013 	zval_ptr_dtor_nogc(free_op2);
39014 	ZEND_VM_SMART_BRANCH(result, 1);
39015 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
39016 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39017 }
39018 
39019 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39020 {
39021 	USE_OPLINE
39022 	zend_free_op free_op2;
39023 	zval *op1, *op2;
39024 	int result;
39025 
39026 	SAVE_OPLINE();
39027 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39028 	op2 = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39029 	result = fast_is_not_identical_function(op1, op2);
39030 
39031 	zval_ptr_dtor_nogc(free_op2);
39032 	ZEND_VM_SMART_BRANCH(result, 1);
39033 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
39034 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39035 }
39036 
39037 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39038 {
39039 	USE_OPLINE
39040 	zend_free_op free_op2;
39041 	zval *value;
39042 	zval *variable_ptr;
39043 
39044 	SAVE_OPLINE();
39045 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39046 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
39047 
39048 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
39049 		zval_ptr_dtor_nogc(free_op2);
39050 		if (UNEXPECTED(0)) {
39051 			ZVAL_NULL(EX_VAR(opline->result.var));
39052 		}
39053 	} else {
39054 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
39055 		if (UNEXPECTED(0)) {
39056 			ZVAL_COPY(EX_VAR(opline->result.var), value);
39057 		}
39058 
39059 		/* zend_assign_to_variable() always takes care of op2, never free it! */
39060 	}
39061 
39062 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39063 }
39064 
39065 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39066 {
39067 	USE_OPLINE
39068 	zend_free_op free_op2;
39069 	zval *value;
39070 	zval *variable_ptr;
39071 
39072 	SAVE_OPLINE();
39073 	value = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39074 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
39075 
39076 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
39077 		zval_ptr_dtor_nogc(free_op2);
39078 		if (UNEXPECTED(1)) {
39079 			ZVAL_NULL(EX_VAR(opline->result.var));
39080 		}
39081 	} else {
39082 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
39083 		if (UNEXPECTED(1)) {
39084 			ZVAL_COPY(EX_VAR(opline->result.var), value);
39085 		}
39086 
39087 		/* zend_assign_to_variable() always takes care of op2, never free it! */
39088 	}
39089 
39090 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39091 }
39092 
39093 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39094 {
39095 	USE_OPLINE
39096 
39097 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
39098 
39099 	SAVE_OPLINE();
39100 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
39101 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
39102 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
39103 
39104 		UNDEF_RESULT();
39105 		HANDLE_EXCEPTION();
39106 	}
39107 
39108 	/* Destroy the previously yielded value */
39109 	zval_ptr_dtor(&generator->value);
39110 
39111 	/* Destroy the previously yielded key */
39112 	zval_ptr_dtor(&generator->key);
39113 
39114 	/* Set the new yielded value */
39115 	if (IS_CV != IS_UNUSED) {
39116 
39117 
39118 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
39119 			/* Constants and temporary variables aren't yieldable by reference,
39120 			 * but we still allow them with a notice. */
39121 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
39122 				zval *value;
39123 
39124 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
39125 
39126 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39127 				ZVAL_COPY_VALUE(&generator->value, value);
39128 				if (IS_CV == IS_CONST) {
39129 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
39130 						Z_ADDREF(generator->value);
39131 					}
39132 				}
39133 			} else {
39134 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
39135 
39136 				/* If a function call result is yielded and the function did
39137 				 * not return by reference we throw a notice. */
39138 				if (IS_CV == IS_VAR &&
39139 				    (value_ptr == &EG(uninitialized_zval) ||
39140 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
39141 				      !Z_ISREF_P(value_ptr)))) {
39142 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
39143 				} else {
39144 					ZVAL_MAKE_REF(value_ptr);
39145 				}
39146 				ZVAL_COPY(&generator->value, value_ptr);
39147 
39148 			}
39149 		} else {
39150 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39151 
39152 			/* Consts, temporary variables and references need copying */
39153 			if (IS_CV == IS_CONST) {
39154 				ZVAL_COPY_VALUE(&generator->value, value);
39155 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
39156 					Z_ADDREF(generator->value);
39157 				}
39158 			} else if (IS_CV == IS_TMP_VAR) {
39159 				ZVAL_COPY_VALUE(&generator->value, value);
39160             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
39161 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
39162 
39163 			} else {
39164 				ZVAL_COPY_VALUE(&generator->value, value);
39165 				if (IS_CV == IS_CV) {
39166 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
39167 				}
39168 			}
39169 		}
39170 	} else {
39171 		/* If no value was specified yield null */
39172 		ZVAL_NULL(&generator->value);
39173 	}
39174 
39175 	/* Set the new yielded key */
39176 	if (IS_TMP_VAR != IS_UNUSED) {
39177 		zend_free_op free_op2;
39178 		zval *key = _get_zval_ptr_tmp(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39179 
39180 		/* Consts, temporary variables and references need copying */
39181 		if (IS_TMP_VAR == IS_CONST) {
39182 			ZVAL_COPY_VALUE(&generator->key, key);
39183 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
39184 				Z_ADDREF(generator->key);
39185 			}
39186 		} else if (IS_TMP_VAR == IS_TMP_VAR) {
39187 			ZVAL_COPY_VALUE(&generator->key, key);
39188 		} else if ((IS_TMP_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
39189 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
39190 
39191 		} else {
39192 			ZVAL_COPY_VALUE(&generator->key, key);
39193 			if (IS_TMP_VAR == IS_CV) {
39194 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
39195 			}
39196 		}
39197 
39198 		if (Z_TYPE(generator->key) == IS_LONG
39199 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
39200 		) {
39201 			generator->largest_used_integer_key = Z_LVAL(generator->key);
39202 		}
39203 	} else {
39204 		/* If no key was specified we use auto-increment keys */
39205 		generator->largest_used_integer_key++;
39206 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
39207 	}
39208 
39209 	if (RETURN_VALUE_USED(opline)) {
39210 		/* If the return value of yield is used set the send
39211 		 * target and initialize it to NULL */
39212 		generator->send_target = EX_VAR(opline->result.var);
39213 		ZVAL_NULL(generator->send_target);
39214 	} else {
39215 		generator->send_target = NULL;
39216 	}
39217 
39218 	/* We increment to the next op, so we are at the correct position when the
39219 	 * generator is resumed. */
39220 	ZEND_VM_INC_OPCODE();
39221 
39222 	/* The GOTO VM uses a local opline variable. We need to set the opline
39223 	 * variable in execute_data so we don't resume at an old position. */
39224 	SAVE_OPLINE();
39225 
39226 	ZEND_VM_RETURN();
39227 }
39228 
39229 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39230 {
39231 	USE_OPLINE
39232 	zend_free_op free_op2;
39233 	zval *op1, *op2;
39234 	int result;
39235 
39236 	SAVE_OPLINE();
39237 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39238 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39239 	result = fast_is_identical_function(op1, op2);
39240 
39241 	zval_ptr_dtor_nogc(free_op2);
39242 	ZEND_VM_SMART_BRANCH(result, 1);
39243 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
39244 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39245 }
39246 
39247 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39248 {
39249 	USE_OPLINE
39250 	zend_free_op free_op2;
39251 	zval *op1, *op2;
39252 	int result;
39253 
39254 	SAVE_OPLINE();
39255 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39256 	op2 = _get_zval_ptr_var_deref(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39257 	result = fast_is_not_identical_function(op1, op2);
39258 
39259 	zval_ptr_dtor_nogc(free_op2);
39260 	ZEND_VM_SMART_BRANCH(result, 1);
39261 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
39262 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39263 }
39264 
39265 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
39266 {
39267 	USE_OPLINE
39268 
39269 	zval *varname;
39270 	zval *retval;
39271 
39272 	SAVE_OPLINE();
39273 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
39274 
39275 	retval = zend_fetch_static_property_address(varname, IS_CV, opline->op2, IS_VAR, type EXECUTE_DATA_CC);
39276 
39277 	if (UNEXPECTED(retval == NULL)) {
39278 		if (EG(exception)) {
39279 
39280 			ZVAL_UNDEF(EX_VAR(opline->result.var));
39281 			HANDLE_EXCEPTION();
39282 		} else {
39283 			ZEND_ASSERT(type == BP_VAR_IS);
39284 			retval = &EG(uninitialized_zval);
39285 		}
39286 	}
39287 
39288 	if (type == BP_VAR_R || type == BP_VAR_IS) {
39289 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
39290 	} else {
39291 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
39292 	}
39293 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39294 }
39295 
39296 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39297 {
39298 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39299 }
39300 
39301 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39302 {
39303 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39304 }
39305 
39306 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39307 {
39308 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39309 }
39310 
39311 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39312 {
39313 	USE_OPLINE
39314 
39315 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
39316 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39317 	} else {
39318 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39319 	}
39320 }
39321 
39322 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39323 {
39324 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39325 }
39326 
39327 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39328 {
39329 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39330 }
39331 
39332 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39333 {
39334 	USE_OPLINE
39335 	zend_free_op free_op2;
39336 	zval *value;
39337 	zval *variable_ptr;
39338 
39339 	SAVE_OPLINE();
39340 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39341 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
39342 
39343 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
39344 		zval_ptr_dtor_nogc(free_op2);
39345 		if (UNEXPECTED(0)) {
39346 			ZVAL_NULL(EX_VAR(opline->result.var));
39347 		}
39348 	} else {
39349 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
39350 		if (UNEXPECTED(0)) {
39351 			ZVAL_COPY(EX_VAR(opline->result.var), value);
39352 		}
39353 
39354 		/* zend_assign_to_variable() always takes care of op2, never free it! */
39355 	}
39356 
39357 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39358 }
39359 
39360 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39361 {
39362 	USE_OPLINE
39363 	zend_free_op free_op2;
39364 	zval *value;
39365 	zval *variable_ptr;
39366 
39367 	SAVE_OPLINE();
39368 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39369 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
39370 
39371 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
39372 		zval_ptr_dtor_nogc(free_op2);
39373 		if (UNEXPECTED(1)) {
39374 			ZVAL_NULL(EX_VAR(opline->result.var));
39375 		}
39376 	} else {
39377 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
39378 		if (UNEXPECTED(1)) {
39379 			ZVAL_COPY(EX_VAR(opline->result.var), value);
39380 		}
39381 
39382 		/* zend_assign_to_variable() always takes care of op2, never free it! */
39383 	}
39384 
39385 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39386 }
39387 
39388 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39389 {
39390 	USE_OPLINE
39391 	zend_free_op free_op2;
39392 	zval *variable_ptr;
39393 	zval *value_ptr;
39394 
39395 	SAVE_OPLINE();
39396 	value_ptr = _get_zval_ptr_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39397 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
39398 
39399 	if (IS_CV == IS_VAR &&
39400 	    UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
39401 	    UNEXPECTED(!Z_ISREF_P(EX_VAR(opline->op1.var))) &&
39402 	    UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
39403 
39404 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
39405 
39406 		if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
39407 		UNDEF_RESULT();
39408 		HANDLE_EXCEPTION();
39409 
39410 	} else if (IS_VAR == IS_VAR &&
39411 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
39412 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
39413 		zend_error(E_NOTICE, "Only variables should be assigned by reference");
39414 		if (UNEXPECTED(EG(exception) != NULL)) {
39415 			if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
39416 			UNDEF_RESULT();
39417 			HANDLE_EXCEPTION();
39418 		}
39419 
39420 		value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_VAR);
39421 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39422 			ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
39423 		}
39424 		/* zend_assign_to_variable() always takes care of op2, never free it! */
39425 
39426 	} else {
39427 
39428 		if ((IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
39429 		    (IS_VAR == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
39430 			variable_ptr = &EG(uninitialized_zval);
39431 		} else {
39432 			zend_assign_to_variable_reference(variable_ptr, value_ptr);
39433 		}
39434 
39435 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39436 			ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
39437 		}
39438 
39439 		if (UNEXPECTED(free_op2)) {zval_ptr_dtor_nogc(free_op2);};
39440 	}
39441 
39442 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39443 }
39444 
39445 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39446 {
39447 	USE_OPLINE
39448 	zval tmp, *varname;
39449 	zend_class_entry *ce;
39450 
39451 
39452 	SAVE_OPLINE();
39453 
39454 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
39455 
39456 	ZVAL_UNDEF(&tmp);
39457 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
39458 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
39459 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
39460 		}
39461 		ZVAL_STR(&tmp, zval_get_string(varname));
39462 		varname = &tmp;
39463 	}
39464 
39465 	if (IS_VAR == IS_CONST) {
39466 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
39467 		if (UNEXPECTED(ce == NULL)) {
39468 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
39469 			if (UNEXPECTED(ce == NULL)) {
39470 				ZEND_ASSERT(EG(exception));
39471 				if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
39472 					zend_string_release(Z_STR(tmp));
39473 				}
39474 
39475 				HANDLE_EXCEPTION();
39476 			}
39477 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
39478 		}
39479 	} else if (IS_VAR == IS_UNUSED) {
39480 		ce = zend_fetch_class(NULL, opline->op2.num);
39481 		if (UNEXPECTED(ce == NULL)) {
39482 			ZEND_ASSERT(EG(exception));
39483 			if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
39484 				zend_string_release(Z_STR(tmp));
39485 			}
39486 
39487 			HANDLE_EXCEPTION();
39488 		}
39489 	} else {
39490 		ce = Z_CE_P(EX_VAR(opline->op2.var));
39491 	}
39492 	zend_std_unset_static_property(ce, Z_STR_P(varname));
39493 
39494 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
39495 		zend_string_release(Z_STR(tmp));
39496 	}
39497 
39498 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39499 }
39500 
39501 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39502 {
39503 	USE_OPLINE
39504 	zval *value;
39505 	int result;
39506 
39507 	zval tmp, *varname;
39508 	zend_class_entry *ce;
39509 
39510 	SAVE_OPLINE();
39511 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
39512 	ZVAL_UNDEF(&tmp);
39513 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
39514 		ZVAL_STR(&tmp, zval_get_string(varname));
39515 		varname = &tmp;
39516 	}
39517 
39518 	if (IS_VAR == IS_CONST) {
39519 		if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
39520 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
39521 
39522 			/* check if static properties were destoyed */
39523 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
39524 				value = NULL;
39525 			}
39526 
39527 			goto is_static_prop_return;
39528 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
39529 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
39530 			if (UNEXPECTED(ce == NULL)) {
39531 				ZEND_ASSERT(EG(exception));
39532 				ZVAL_UNDEF(EX_VAR(opline->result.var));
39533 				HANDLE_EXCEPTION();
39534 			}
39535 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
39536 		}
39537 	} else {
39538 		if (IS_VAR == IS_UNUSED) {
39539 			ce = zend_fetch_class(NULL, opline->op2.num);
39540 			if (UNEXPECTED(ce == NULL)) {
39541 				ZEND_ASSERT(EG(exception));
39542 				if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
39543 					zend_string_release(Z_STR(tmp));
39544 				}
39545 
39546 				ZVAL_UNDEF(EX_VAR(opline->result.var));
39547 				HANDLE_EXCEPTION();
39548 			}
39549 		} else {
39550 			ce = Z_CE_P(EX_VAR(opline->op2.var));
39551 		}
39552 		if (IS_CV == IS_CONST &&
39553 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
39554 
39555 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
39556 
39557 			/* check if static properties were destoyed */
39558 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
39559 				value = NULL;
39560 			}
39561 
39562 			goto is_static_prop_return;
39563 		}
39564 	}
39565 
39566 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
39567 
39568 	if (IS_CV == IS_CONST && value) {
39569 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
39570 	}
39571 
39572 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
39573 		zend_string_release(Z_STR(tmp));
39574 	}
39575 
39576 is_static_prop_return:
39577 	if (opline->extended_value & ZEND_ISSET) {
39578 		result = value && Z_TYPE_P(value) > IS_NULL &&
39579 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
39580 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
39581 		result = !value || !i_zend_is_true(value);
39582 	}
39583 
39584 	ZEND_VM_SMART_BRANCH(result, 1);
39585 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
39586 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39587 }
39588 
39589 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39590 {
39591 	USE_OPLINE
39592 
39593 	zval *expr;
39594 	zend_bool result;
39595 
39596 	SAVE_OPLINE();
39597 	expr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
39598 
39599 try_instanceof:
39600 	if (Z_TYPE_P(expr) == IS_OBJECT) {
39601 		zend_class_entry *ce;
39602 
39603 		if (IS_VAR == IS_CONST) {
39604 			ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
39605 			if (UNEXPECTED(ce == NULL)) {
39606 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
39607 				if (EXPECTED(ce)) {
39608 					CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
39609 				}
39610 			}
39611 		} else if (IS_VAR == IS_UNUSED) {
39612 			ce = zend_fetch_class(NULL, opline->op2.num);
39613 			if (UNEXPECTED(ce == NULL)) {
39614 				ZEND_ASSERT(EG(exception));
39615 
39616 				ZVAL_UNDEF(EX_VAR(opline->result.var));
39617 				HANDLE_EXCEPTION();
39618 			}
39619 		} else {
39620 			ce = Z_CE_P(EX_VAR(opline->op2.var));
39621 		}
39622 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
39623 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
39624 		expr = Z_REFVAL_P(expr);
39625 		goto try_instanceof;
39626 	} else {
39627 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
39628 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
39629 		}
39630 		result = 0;
39631 	}
39632 
39633 	ZEND_VM_SMART_BRANCH(result, 1);
39634 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
39635 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
39636 }
39637 
39638 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39639 {
39640 	USE_OPLINE
39641 
39642 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
39643 
39644 	SAVE_OPLINE();
39645 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
39646 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
39647 		zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
39648 
39649 		UNDEF_RESULT();
39650 		HANDLE_EXCEPTION();
39651 	}
39652 
39653 	/* Destroy the previously yielded value */
39654 	zval_ptr_dtor(&generator->value);
39655 
39656 	/* Destroy the previously yielded key */
39657 	zval_ptr_dtor(&generator->key);
39658 
39659 	/* Set the new yielded value */
39660 	if (IS_CV != IS_UNUSED) {
39661 
39662 
39663 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
39664 			/* Constants and temporary variables aren't yieldable by reference,
39665 			 * but we still allow them with a notice. */
39666 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
39667 				zval *value;
39668 
39669 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
39670 
39671 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39672 				ZVAL_COPY_VALUE(&generator->value, value);
39673 				if (IS_CV == IS_CONST) {
39674 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
39675 						Z_ADDREF(generator->value);
39676 					}
39677 				}
39678 			} else {
39679 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
39680 
39681 				/* If a function call result is yielded and the function did
39682 				 * not return by reference we throw a notice. */
39683 				if (IS_CV == IS_VAR &&
39684 				    (value_ptr == &EG(uninitialized_zval) ||
39685 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
39686 				      !Z_ISREF_P(value_ptr)))) {
39687 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
39688 				} else {
39689 					ZVAL_MAKE_REF(value_ptr);
39690 				}
39691 				ZVAL_COPY(&generator->value, value_ptr);
39692 
39693 			}
39694 		} else {
39695 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
39696 
39697 			/* Consts, temporary variables and references need copying */
39698 			if (IS_CV == IS_CONST) {
39699 				ZVAL_COPY_VALUE(&generator->value, value);
39700 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
39701 					Z_ADDREF(generator->value);
39702 				}
39703 			} else if (IS_CV == IS_TMP_VAR) {
39704 				ZVAL_COPY_VALUE(&generator->value, value);
39705             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
39706 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
39707 
39708 			} else {
39709 				ZVAL_COPY_VALUE(&generator->value, value);
39710 				if (IS_CV == IS_CV) {
39711 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
39712 				}
39713 			}
39714 		}
39715 	} else {
39716 		/* If no value was specified yield null */
39717 		ZVAL_NULL(&generator->value);
39718 	}
39719 
39720 	/* Set the new yielded key */
39721 	if (IS_VAR != IS_UNUSED) {
39722 		zend_free_op free_op2;
39723 		zval *key = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
39724 
39725 		/* Consts, temporary variables and references need copying */
39726 		if (IS_VAR == IS_CONST) {
39727 			ZVAL_COPY_VALUE(&generator->key, key);
39728 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
39729 				Z_ADDREF(generator->key);
39730 			}
39731 		} else if (IS_VAR == IS_TMP_VAR) {
39732 			ZVAL_COPY_VALUE(&generator->key, key);
39733 		} else if ((IS_VAR & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
39734 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
39735 			zval_ptr_dtor_nogc(free_op2);
39736 		} else {
39737 			ZVAL_COPY_VALUE(&generator->key, key);
39738 			if (IS_VAR == IS_CV) {
39739 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
39740 			}
39741 		}
39742 
39743 		if (Z_TYPE(generator->key) == IS_LONG
39744 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
39745 		) {
39746 			generator->largest_used_integer_key = Z_LVAL(generator->key);
39747 		}
39748 	} else {
39749 		/* If no key was specified we use auto-increment keys */
39750 		generator->largest_used_integer_key++;
39751 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
39752 	}
39753 
39754 	if (RETURN_VALUE_USED(opline)) {
39755 		/* If the return value of yield is used set the send
39756 		 * target and initialize it to NULL */
39757 		generator->send_target = EX_VAR(opline->result.var);
39758 		ZVAL_NULL(generator->send_target);
39759 	} else {
39760 		generator->send_target = NULL;
39761 	}
39762 
39763 	/* We increment to the next op, so we are at the correct position when the
39764 	 * generator is resumed. */
39765 	ZEND_VM_INC_OPCODE();
39766 
39767 	/* The GOTO VM uses a local opline variable. We need to set the opline
39768 	 * variable in execute_data so we don't resume at an old position. */
39769 	SAVE_OPLINE();
39770 
39771 	ZEND_VM_RETURN();
39772 }
39773 
39774 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
39775 {
39776 	USE_OPLINE
39777 	zend_free_op free_op_data1;
39778 	zval *var_ptr;
39779 	zval *value, *container, *dim;
39780 
39781 	SAVE_OPLINE();
39782 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
39783 
39784 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
39785 assign_dim_op_array:
39786 		SEPARATE_ARRAY(container);
39787 assign_dim_op_new_array:
39788 		if (IS_UNUSED == IS_UNUSED) {
39789 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
39790 			if (UNEXPECTED(!var_ptr)) {
39791 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
39792 				goto assign_dim_op_ret_null;
39793 			}
39794 		} else {
39795 			dim = NULL;
39796 
39797 			if (IS_UNUSED == IS_CONST) {
39798 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
39799 			} else {
39800 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
39801 			}
39802 			if (UNEXPECTED(!var_ptr)) {
39803 				goto assign_dim_op_ret_null;
39804 			}
39805 			ZVAL_DEREF(var_ptr);
39806 			SEPARATE_ZVAL_NOREF(var_ptr);
39807 		}
39808 
39809 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
39810 
39811 		binary_op(var_ptr, var_ptr, value);
39812 
39813 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39814 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
39815 		}
39816 	} else {
39817 		if (EXPECTED(Z_ISREF_P(container))) {
39818 			container = Z_REFVAL_P(container);
39819 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
39820 				goto assign_dim_op_array;
39821 			}
39822 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
39823 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
39824 assign_dim_op_convert_to_array:
39825 			ZVAL_NEW_ARR(container);
39826 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
39827 			goto assign_dim_op_new_array;
39828 		}
39829 
39830 		dim = NULL;
39831 
39832 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
39833 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
39834 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
39835 		} else {
39836 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
39837 				if (IS_UNUSED == IS_UNUSED) {
39838 					zend_throw_error(NULL, "[] operator not supported for strings");
39839 				} else {
39840 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
39841 					if (EXPECTED(EG(exception) == NULL)) {
39842 						zend_wrong_string_offset(EXECUTE_DATA_C);
39843 					}
39844 				}
39845 				UNDEF_RESULT();
39846 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
39847 				goto assign_dim_op_convert_to_array;
39848 			} else {
39849 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
39850 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
39851 				}
39852 assign_dim_op_ret_null:
39853 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
39854 					ZVAL_NULL(EX_VAR(opline->result.var));
39855 				}
39856 			}
39857 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
39858 		}
39859 	}
39860 
39861 	FREE_OP(free_op_data1);
39862 
39863 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
39864 }
39865 
39866 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
39867 {
39868 #if 1 && IS_UNUSED == IS_UNUSED
39869 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39870 #else
39871 # if 0 || IS_CV != IS_UNUSED
39872 	USE_OPLINE
39873 
39874 	if (EXPECTED(0)) {
39875 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39876 	}
39877 	if (EXPECTED(1)) {
39878 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39879 	}
39880 # endif
39881 
39882 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_UNUSED(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39883 #endif
39884 }
39885 
39886 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39887 {
39888 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39889 }
39890 
39891 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39892 {
39893 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39894 }
39895 
39896 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39897 {
39898 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39899 }
39900 
39901 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39902 {
39903 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39904 }
39905 
39906 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39907 {
39908 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39909 }
39910 
39911 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39912 {
39913 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39914 }
39915 
39916 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39917 {
39918 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39919 }
39920 
39921 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39922 {
39923 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39924 }
39925 
39926 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39927 {
39928 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39929 }
39930 
39931 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39932 {
39933 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39934 }
39935 
39936 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39937 {
39938 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39939 }
39940 
39941 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
39942 {
39943 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_UNUSED_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
39944 }
39945 
39946 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_CV_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
39947 {
39948 	USE_OPLINE
39949 
39950 	zval *varname;
39951 	zval *retval;
39952 	zend_string *name;
39953 	HashTable *target_symbol_table;
39954 
39955 	SAVE_OPLINE();
39956 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
39957 
39958  	if (IS_CV == IS_CONST) {
39959 		name = Z_STR_P(varname);
39960 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
39961 		name = Z_STR_P(varname);
39962 		zend_string_addref(name);
39963 	} else {
39964 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
39965 			GET_OP1_UNDEF_CV(varname, BP_VAR_R);
39966 		}
39967 		name = zval_get_string(varname);
39968 	}
39969 
39970 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
39971 	retval = zend_hash_find(target_symbol_table, name);
39972 	if (retval == NULL) {
39973 		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
39974 			zval *result;
39975 
39976 fetch_this:
39977 			result = EX_VAR(opline->result.var);
39978 			switch (type) {
39979 				case BP_VAR_R:
39980 					if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
39981 						ZVAL_OBJ(result, Z_OBJ(EX(This)));
39982 						Z_ADDREF_P(result);
39983 					} else {
39984 						ZVAL_NULL(result);
39985 						zend_error(E_NOTICE,"Undefined variable: this");
39986 					}
39987 					break;
39988 				case BP_VAR_IS:
39989 					if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
39990 						ZVAL_OBJ(result, Z_OBJ(EX(This)));
39991 						Z_ADDREF_P(result);
39992 					} else {
39993 						ZVAL_NULL(result);
39994 					}
39995 					break;
39996 				case BP_VAR_RW:
39997 				case BP_VAR_W:
39998 					ZVAL_UNDEF(result);
39999 					zend_throw_error(NULL, "Cannot re-assign $this");
40000 					break;
40001 				case BP_VAR_UNSET:
40002 					ZVAL_UNDEF(result);
40003 					zend_throw_error(NULL, "Cannot unset $this");
40004 					break;
40005 				EMPTY_SWITCH_DEFAULT_CASE()
40006 			}
40007 			if (IS_CV != IS_CONST) {
40008 				zend_string_release(name);
40009 			}
40010 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40011 		}
40012 		switch (type) {
40013 			case BP_VAR_R:
40014 			case BP_VAR_UNSET:
40015 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
40016 				/* break missing intentionally */
40017 			case BP_VAR_IS:
40018 				retval = &EG(uninitialized_zval);
40019 				break;
40020 			case BP_VAR_RW:
40021 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
40022 				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
40023 				break;
40024 			case BP_VAR_W:
40025 				retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
40026 				break;
40027 			EMPTY_SWITCH_DEFAULT_CASE()
40028 		}
40029 	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
40030 	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
40031 		retval = Z_INDIRECT_P(retval);
40032 		if (Z_TYPE_P(retval) == IS_UNDEF) {
40033 			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
40034 				goto fetch_this;
40035 			}
40036 			switch (type) {
40037 				case BP_VAR_R:
40038 				case BP_VAR_UNSET:
40039 					zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
40040 					/* break missing intentionally */
40041 				case BP_VAR_IS:
40042 					retval = &EG(uninitialized_zval);
40043 					break;
40044 				case BP_VAR_RW:
40045 					zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
40046 					/* break missing intentionally */
40047 				case BP_VAR_W:
40048 					ZVAL_NULL(retval);
40049 					break;
40050 				EMPTY_SWITCH_DEFAULT_CASE()
40051 			}
40052 		}
40053 	}
40054 
40055 	if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) {
40056 
40057 	}
40058 
40059 	if (IS_CV != IS_CONST) {
40060 		zend_string_release(name);
40061 	}
40062 
40063 	ZEND_ASSERT(retval != NULL);
40064 	if (type == BP_VAR_R || type == BP_VAR_IS) {
40065 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
40066 	} else {
40067 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
40068 	}
40069 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40070 }
40071 
40072 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40073 {
40074 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40075 }
40076 
40077 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40078 {
40079 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40080 }
40081 
40082 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40083 {
40084 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40085 }
40086 
40087 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40088 {
40089 	USE_OPLINE
40090 
40091 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
40092 		ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40093 	} else {
40094 		ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40095 	}
40096 }
40097 
40098 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40099 {
40100 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40101 }
40102 
40103 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40104 {
40105 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_CV_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40106 }
40107 
40108 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_CV_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
40109 {
40110 	USE_OPLINE
40111 
40112 	zval *varname;
40113 	zval *retval;
40114 
40115 	SAVE_OPLINE();
40116 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
40117 
40118 	retval = zend_fetch_static_property_address(varname, IS_CV, opline->op2, IS_UNUSED, type EXECUTE_DATA_CC);
40119 
40120 	if (UNEXPECTED(retval == NULL)) {
40121 		if (EG(exception)) {
40122 
40123 			ZVAL_UNDEF(EX_VAR(opline->result.var));
40124 			HANDLE_EXCEPTION();
40125 		} else {
40126 			ZEND_ASSERT(type == BP_VAR_IS);
40127 			retval = &EG(uninitialized_zval);
40128 		}
40129 	}
40130 
40131 	if (type == BP_VAR_R || type == BP_VAR_IS) {
40132 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
40133 	} else {
40134 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
40135 	}
40136 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40137 }
40138 
40139 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40140 {
40141 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40142 }
40143 
40144 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40145 {
40146 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40147 }
40148 
40149 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40150 {
40151 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40152 }
40153 
40154 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40155 {
40156 	USE_OPLINE
40157 
40158 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
40159 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40160 	} else {
40161 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40162 	}
40163 }
40164 
40165 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40166 {
40167 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40168 }
40169 
40170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40171 {
40172 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_CV_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
40173 }
40174 
40175 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40176 {
40177 	USE_OPLINE
40178 	zend_free_op free_op1;
40179 	zval *container;
40180 
40181 	SAVE_OPLINE();
40182 	container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
40183 
40184 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
40185 
40186 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
40187 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
40188 	}
40189 
40190 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40191 }
40192 
40193 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40194 {
40195 	USE_OPLINE
40196 	zend_free_op free_op1;
40197 	zval *container;
40198 
40199 	SAVE_OPLINE();
40200 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
40201 
40202 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
40203 
40204 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
40205 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
40206 	}
40207 
40208 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40209 }
40210 
40211 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40212 {
40213 	USE_OPLINE
40214 	zval *container;
40215 	zend_free_op free_op1;
40216 
40217 	SAVE_OPLINE();
40218 
40219 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
40220         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
40221             zend_throw_error(NULL, "Cannot use temporary expression in write context");
40222 
40223 
40224 			ZVAL_UNDEF(EX_VAR(opline->result.var));
40225 			HANDLE_EXCEPTION();
40226         }
40227 		container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
40228 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
40229 		if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
40230 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
40231 		}
40232 
40233 
40234 	} else {
40235 		if (IS_UNUSED == IS_UNUSED) {
40236 			zend_throw_error(NULL, "Cannot use [] for reading");
40237 
40238 
40239 			ZVAL_UNDEF(EX_VAR(opline->result.var));
40240 			HANDLE_EXCEPTION();
40241 		}
40242 		container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
40243 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, NULL, IS_UNUSED EXECUTE_DATA_CC);
40244 
40245 
40246 	}
40247 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40248 }
40249 
40250 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40251 {
40252 	USE_OPLINE
40253 
40254 	zval *object_ptr;
40255 
40256 	zval *value;
40257 	zval *variable_ptr;
40258 	zval *dim;
40259 
40260 	SAVE_OPLINE();
40261 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
40262 
40263 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40264 try_assign_dim_array:
40265 		SEPARATE_ARRAY(object_ptr);
40266 		if (IS_UNUSED == IS_UNUSED) {
40267 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
40268 			if (UNEXPECTED(variable_ptr == NULL)) {
40269 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
40270 				goto assign_dim_error;
40271 			}
40272 		} else {
40273 			dim = NULL;
40274 			if (IS_UNUSED == IS_CONST) {
40275 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40276 			} else {
40277 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40278 			}
40279 			if (UNEXPECTED(variable_ptr == NULL)) {
40280 				goto assign_dim_error;
40281 			}
40282 		}
40283 		value = EX_CONSTANT((opline+1)->op1);
40284 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
40285 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40286 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40287 		}
40288 	} else {
40289 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40290 			object_ptr = Z_REFVAL_P(object_ptr);
40291 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40292 				goto try_assign_dim_array;
40293 			}
40294 		}
40295 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40296 			dim = NULL;
40297 			value = EX_CONSTANT((opline+1)->op1);
40298 
40299 			zend_assign_to_object_dim(object_ptr, dim, value);
40300 
40301 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40302 				ZVAL_COPY(EX_VAR(opline->result.var), value);
40303 			}
40304 
40305 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40306 			if (IS_UNUSED == IS_UNUSED) {
40307 				zend_throw_error(NULL, "[] operator not supported for strings");
40308 
40309 
40310 				UNDEF_RESULT();
40311 				HANDLE_EXCEPTION();
40312 			} else {
40313 				dim = NULL;
40314 				value = EX_CONSTANT((opline+1)->op1);
40315 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
40316 
40317 			}
40318 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40319 			ZVAL_NEW_ARR(object_ptr);
40320 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
40321 			goto try_assign_dim_array;
40322 		} else {
40323 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40324 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
40325 			}
40326 			dim = NULL;
40327 assign_dim_error:
40328 
40329 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40330 				ZVAL_NULL(EX_VAR(opline->result.var));
40331 			}
40332 		}
40333 	}
40334 	if (IS_UNUSED != IS_UNUSED) {
40335 
40336 	}
40337 
40338 	/* assign_dim has two opcodes! */
40339 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40340 }
40341 
40342 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40343 {
40344 	USE_OPLINE
40345 
40346 	zval *object_ptr;
40347 	zend_free_op free_op_data;
40348 	zval *value;
40349 	zval *variable_ptr;
40350 	zval *dim;
40351 
40352 	SAVE_OPLINE();
40353 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
40354 
40355 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40356 try_assign_dim_array:
40357 		SEPARATE_ARRAY(object_ptr);
40358 		if (IS_UNUSED == IS_UNUSED) {
40359 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
40360 			if (UNEXPECTED(variable_ptr == NULL)) {
40361 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
40362 				goto assign_dim_error;
40363 			}
40364 		} else {
40365 			dim = NULL;
40366 			if (IS_UNUSED == IS_CONST) {
40367 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40368 			} else {
40369 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40370 			}
40371 			if (UNEXPECTED(variable_ptr == NULL)) {
40372 				goto assign_dim_error;
40373 			}
40374 		}
40375 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40376 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
40377 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40378 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40379 		}
40380 	} else {
40381 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40382 			object_ptr = Z_REFVAL_P(object_ptr);
40383 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40384 				goto try_assign_dim_array;
40385 			}
40386 		}
40387 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40388 			dim = NULL;
40389 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40390 
40391 			zend_assign_to_object_dim(object_ptr, dim, value);
40392 
40393 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40394 				ZVAL_COPY(EX_VAR(opline->result.var), value);
40395 			}
40396 
40397 			zval_ptr_dtor_nogc(free_op_data);
40398 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40399 			if (IS_UNUSED == IS_UNUSED) {
40400 				zend_throw_error(NULL, "[] operator not supported for strings");
40401 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40402 
40403 				UNDEF_RESULT();
40404 				HANDLE_EXCEPTION();
40405 			} else {
40406 				dim = NULL;
40407 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40408 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
40409 				zval_ptr_dtor_nogc(free_op_data);
40410 			}
40411 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40412 			ZVAL_NEW_ARR(object_ptr);
40413 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
40414 			goto try_assign_dim_array;
40415 		} else {
40416 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40417 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
40418 			}
40419 			dim = NULL;
40420 assign_dim_error:
40421 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40422 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40423 				ZVAL_NULL(EX_VAR(opline->result.var));
40424 			}
40425 		}
40426 	}
40427 	if (IS_UNUSED != IS_UNUSED) {
40428 
40429 	}
40430 
40431 	/* assign_dim has two opcodes! */
40432 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40433 }
40434 
40435 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40436 {
40437 	USE_OPLINE
40438 
40439 	zval *object_ptr;
40440 	zend_free_op free_op_data;
40441 	zval *value;
40442 	zval *variable_ptr;
40443 	zval *dim;
40444 
40445 	SAVE_OPLINE();
40446 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
40447 
40448 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40449 try_assign_dim_array:
40450 		SEPARATE_ARRAY(object_ptr);
40451 		if (IS_UNUSED == IS_UNUSED) {
40452 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
40453 			if (UNEXPECTED(variable_ptr == NULL)) {
40454 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
40455 				goto assign_dim_error;
40456 			}
40457 		} else {
40458 			dim = NULL;
40459 			if (IS_UNUSED == IS_CONST) {
40460 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40461 			} else {
40462 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40463 			}
40464 			if (UNEXPECTED(variable_ptr == NULL)) {
40465 				goto assign_dim_error;
40466 			}
40467 		}
40468 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40469 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
40470 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40471 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40472 		}
40473 	} else {
40474 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40475 			object_ptr = Z_REFVAL_P(object_ptr);
40476 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40477 				goto try_assign_dim_array;
40478 			}
40479 		}
40480 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40481 			dim = NULL;
40482 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40483 
40484 			zend_assign_to_object_dim(object_ptr, dim, value);
40485 
40486 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40487 				ZVAL_COPY(EX_VAR(opline->result.var), value);
40488 			}
40489 
40490 			zval_ptr_dtor_nogc(free_op_data);
40491 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40492 			if (IS_UNUSED == IS_UNUSED) {
40493 				zend_throw_error(NULL, "[] operator not supported for strings");
40494 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40495 
40496 				UNDEF_RESULT();
40497 				HANDLE_EXCEPTION();
40498 			} else {
40499 				dim = NULL;
40500 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
40501 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
40502 				zval_ptr_dtor_nogc(free_op_data);
40503 			}
40504 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40505 			ZVAL_NEW_ARR(object_ptr);
40506 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
40507 			goto try_assign_dim_array;
40508 		} else {
40509 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40510 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
40511 			}
40512 			dim = NULL;
40513 assign_dim_error:
40514 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
40515 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40516 				ZVAL_NULL(EX_VAR(opline->result.var));
40517 			}
40518 		}
40519 	}
40520 	if (IS_UNUSED != IS_UNUSED) {
40521 
40522 	}
40523 
40524 	/* assign_dim has two opcodes! */
40525 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40526 }
40527 
40528 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40529 {
40530 	USE_OPLINE
40531 
40532 	zval *object_ptr;
40533 
40534 	zval *value;
40535 	zval *variable_ptr;
40536 	zval *dim;
40537 
40538 	SAVE_OPLINE();
40539 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
40540 
40541 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40542 try_assign_dim_array:
40543 		SEPARATE_ARRAY(object_ptr);
40544 		if (IS_UNUSED == IS_UNUSED) {
40545 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
40546 			if (UNEXPECTED(variable_ptr == NULL)) {
40547 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
40548 				goto assign_dim_error;
40549 			}
40550 		} else {
40551 			dim = NULL;
40552 			if (IS_UNUSED == IS_CONST) {
40553 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40554 			} else {
40555 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
40556 			}
40557 			if (UNEXPECTED(variable_ptr == NULL)) {
40558 				goto assign_dim_error;
40559 			}
40560 		}
40561 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40562 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
40563 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40564 			ZVAL_COPY(EX_VAR(opline->result.var), value);
40565 		}
40566 	} else {
40567 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
40568 			object_ptr = Z_REFVAL_P(object_ptr);
40569 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
40570 				goto try_assign_dim_array;
40571 			}
40572 		}
40573 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
40574 			dim = NULL;
40575 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40576 
40577 			zend_assign_to_object_dim(object_ptr, dim, value);
40578 
40579 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40580 				ZVAL_COPY(EX_VAR(opline->result.var), value);
40581 			}
40582 
40583 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
40584 			if (IS_UNUSED == IS_UNUSED) {
40585 				zend_throw_error(NULL, "[] operator not supported for strings");
40586 
40587 
40588 				UNDEF_RESULT();
40589 				HANDLE_EXCEPTION();
40590 			} else {
40591 				dim = NULL;
40592 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
40593 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
40594 
40595 			}
40596 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
40597 			ZVAL_NEW_ARR(object_ptr);
40598 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
40599 			goto try_assign_dim_array;
40600 		} else {
40601 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
40602 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
40603 			}
40604 			dim = NULL;
40605 assign_dim_error:
40606 
40607 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
40608 				ZVAL_NULL(EX_VAR(opline->result.var));
40609 			}
40610 		}
40611 	}
40612 	if (IS_UNUSED != IS_UNUSED) {
40613 
40614 	}
40615 
40616 	/* assign_dim has two opcodes! */
40617 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
40618 }
40619 
40620 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40621 {
40622 	USE_OPLINE
40623 
40624 	SAVE_OPLINE();
40625 	if (IS_CV == IS_UNUSED) {
40626 		zend_verify_missing_return_type(EX(func), CACHE_ADDR(opline->op2.num));
40627 	} else {
40628 /* prevents "undefined variable opline" errors */
40629 #if 0 || (IS_CV != IS_UNUSED)
40630 		zval *retval_ref, *retval_ptr;
40631 
40632 		zend_arg_info *ret_info = EX(func)->common.arg_info - 1;
40633 
40634 		retval_ref = retval_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
40635 
40636 		if (IS_CV == IS_CONST) {
40637 			ZVAL_COPY(EX_VAR(opline->result.var), retval_ptr);
40638 			retval_ref = retval_ptr = EX_VAR(opline->result.var);
40639 		} else if (IS_CV == IS_VAR) {
40640 			if (UNEXPECTED(Z_TYPE_P(retval_ptr) == IS_INDIRECT)) {
40641 				retval_ptr = Z_INDIRECT_P(retval_ptr);
40642 			}
40643 			ZVAL_DEREF(retval_ptr);
40644 		} else if (IS_CV == IS_CV) {
40645 			ZVAL_DEREF(retval_ptr);
40646 		}
40647 
40648 		if (UNEXPECTED(!ZEND_TYPE_IS_CLASS(ret_info->type)
40649 			&& ZEND_TYPE_CODE(ret_info->type) != IS_CALLABLE
40650 			&& ZEND_TYPE_CODE(ret_info->type) != IS_ITERABLE
40651 			&& !ZEND_SAME_FAKE_TYPE(ZEND_TYPE_CODE(ret_info->type), Z_TYPE_P(retval_ptr))
40652 			&& !(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)
40653 			&& retval_ref != retval_ptr)
40654 		) {
40655 			/* A cast might happen - unwrap the reference if this is a by-value return */
40656 			if (Z_REFCOUNT_P(retval_ref) == 1) {
40657 				ZVAL_UNREF(retval_ref);
40658 			} else {
40659 				Z_DELREF_P(retval_ref);
40660 				ZVAL_COPY(retval_ref, retval_ptr);
40661 			}
40662 			retval_ptr = retval_ref;
40663 		}
40664 		zend_verify_return_type(EX(func), retval_ptr, CACHE_ADDR(opline->op2.num));
40665 #endif
40666 	}
40667 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40668 }
40669 
40670 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40671 {
40672 	USE_OPLINE
40673 
40674 	zval *expr_ptr, new_expr;
40675 
40676 	SAVE_OPLINE();
40677 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
40678 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
40679 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
40680 		ZVAL_MAKE_REF(expr_ptr);
40681 		Z_ADDREF_P(expr_ptr);
40682 
40683 	} else {
40684 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
40685 		if (IS_CV == IS_TMP_VAR) {
40686 			/* pass */
40687 		} else if (IS_CV == IS_CONST) {
40688 			if (Z_REFCOUNTED_P(expr_ptr)) {
40689 				Z_ADDREF_P(expr_ptr);
40690 			}
40691 		} else if (IS_CV == IS_CV) {
40692 			ZVAL_DEREF(expr_ptr);
40693 			if (Z_REFCOUNTED_P(expr_ptr)) {
40694 				Z_ADDREF_P(expr_ptr);
40695 			}
40696 		} else /* if (IS_CV == IS_VAR) */ {
40697 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
40698 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
40699 
40700 				expr_ptr = Z_REFVAL_P(expr_ptr);
40701 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
40702 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
40703 					expr_ptr = &new_expr;
40704 					efree_size(ref, sizeof(zend_reference));
40705 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
40706 					Z_ADDREF_P(expr_ptr);
40707 				}
40708 			}
40709 		}
40710 	}
40711 
40712 	if (IS_UNUSED != IS_UNUSED) {
40713 
40714 		zval *offset = NULL;
40715 		zend_string *str;
40716 		zend_ulong hval;
40717 
40718 add_again:
40719 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
40720 			str = Z_STR_P(offset);
40721 			if (IS_UNUSED != IS_CONST) {
40722 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
40723 					goto num_index;
40724 				}
40725 			}
40726 str_index:
40727 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
40728 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
40729 			hval = Z_LVAL_P(offset);
40730 num_index:
40731 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
40732 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
40733 			offset = Z_REFVAL_P(offset);
40734 			goto add_again;
40735 		} else if (Z_TYPE_P(offset) == IS_NULL) {
40736 			str = ZSTR_EMPTY_ALLOC();
40737 			goto str_index;
40738 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
40739 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
40740 			goto num_index;
40741 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
40742 			hval = 0;
40743 			goto num_index;
40744 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
40745 			hval = 1;
40746 			goto num_index;
40747 		} else if (IS_UNUSED == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
40748 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
40749 			str = ZSTR_EMPTY_ALLOC();
40750 			goto str_index;
40751 		} else {
40752 			zend_error(E_WARNING, "Illegal offset type");
40753 			zval_ptr_dtor(expr_ptr);
40754 		}
40755 
40756 	} else {
40757 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
40758 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
40759 			zval_ptr_dtor(expr_ptr);
40760 		}
40761 	}
40762 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40763 }
40764 
40765 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40766 {
40767 	zval *array;
40768 	uint32_t size;
40769 	USE_OPLINE
40770 
40771 	array = EX_VAR(opline->result.var);
40772 	if (IS_CV != IS_UNUSED) {
40773 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
40774 	} else {
40775 		size = 0;
40776 	}
40777 	ZVAL_NEW_ARR(array);
40778 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
40779 
40780 	if (IS_CV != IS_UNUSED) {
40781 		/* Explicitly initialize array as not-packed if flag is set */
40782 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
40783 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
40784 		}
40785 	}
40786 
40787 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
40788 }
40789 
40790 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40791 {
40792 	USE_OPLINE
40793 	zval *var = EX_VAR(opline->op1.var);
40794 
40795 	if (Z_REFCOUNTED_P(var)) {
40796 		zend_refcounted *garbage = Z_COUNTED_P(var);
40797 
40798 		ZVAL_UNDEF(var);
40799 		SAVE_OPLINE();
40800 		if (!--GC_REFCOUNT(garbage)) {
40801 			zval_dtor_func(garbage);
40802 		} else {
40803 			gc_check_possible_root(garbage);
40804 		}
40805 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40806 	} else {
40807 		ZVAL_UNDEF(var);
40808 	}
40809 	ZEND_VM_NEXT_OPCODE();
40810 }
40811 
40812 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40813 {
40814 	USE_OPLINE
40815 	zval tmp, *varname;
40816 	HashTable *target_symbol_table;
40817 
40818 
40819 	SAVE_OPLINE();
40820 
40821 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
40822 
40823 	ZVAL_UNDEF(&tmp);
40824 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
40825 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
40826 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
40827 		}
40828 		ZVAL_STR(&tmp, zval_get_string(varname));
40829 		varname = &tmp;
40830 	}
40831 
40832 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
40833 	zend_hash_del_ind(target_symbol_table, Z_STR_P(varname));
40834 
40835 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
40836 		zend_string_release(Z_STR(tmp));
40837 	}
40838 
40839 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40840 }
40841 
40842 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40843 {
40844 	USE_OPLINE
40845 	zval tmp, *varname;
40846 	zend_class_entry *ce;
40847 
40848 
40849 	SAVE_OPLINE();
40850 
40851 	varname = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
40852 
40853 	ZVAL_UNDEF(&tmp);
40854 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
40855 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
40856 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
40857 		}
40858 		ZVAL_STR(&tmp, zval_get_string(varname));
40859 		varname = &tmp;
40860 	}
40861 
40862 	if (IS_UNUSED == IS_CONST) {
40863 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
40864 		if (UNEXPECTED(ce == NULL)) {
40865 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
40866 			if (UNEXPECTED(ce == NULL)) {
40867 				ZEND_ASSERT(EG(exception));
40868 				if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
40869 					zend_string_release(Z_STR(tmp));
40870 				}
40871 
40872 				HANDLE_EXCEPTION();
40873 			}
40874 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
40875 		}
40876 	} else if (IS_UNUSED == IS_UNUSED) {
40877 		ce = zend_fetch_class(NULL, opline->op2.num);
40878 		if (UNEXPECTED(ce == NULL)) {
40879 			ZEND_ASSERT(EG(exception));
40880 			if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
40881 				zend_string_release(Z_STR(tmp));
40882 			}
40883 
40884 			HANDLE_EXCEPTION();
40885 		}
40886 	} else {
40887 		ce = Z_CE_P(EX_VAR(opline->op2.var));
40888 	}
40889 	zend_std_unset_static_property(ce, Z_STR_P(varname));
40890 
40891 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
40892 		zend_string_release(Z_STR(tmp));
40893 	}
40894 
40895 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40896 }
40897 
40898 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40899 {
40900 	USE_OPLINE
40901 	zval *value;
40902 	int result;
40903 
40904 	value = EX_VAR(opline->op1.var);
40905 	if (opline->extended_value & ZEND_ISSET) {
40906 		result =
40907 			Z_TYPE_P(value) > IS_NULL &&
40908 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
40909 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
40910 		SAVE_OPLINE();
40911 		result = !i_zend_is_true(value);
40912 		if (UNEXPECTED(EG(exception))) {
40913 			ZVAL_UNDEF(EX_VAR(opline->result.var));
40914 			HANDLE_EXCEPTION();
40915 		}
40916 	}
40917 	ZEND_VM_SMART_BRANCH(result, 0);
40918 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
40919 	ZEND_VM_SET_NEXT_OPCODE(opline + 1);
40920 	ZEND_VM_CONTINUE();
40921 }
40922 
40923 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40924 {
40925 	USE_OPLINE
40926 	zval *value;
40927 	int result;
40928 
40929 	zval tmp, *varname;
40930 	HashTable *target_symbol_table;
40931 
40932 	SAVE_OPLINE();
40933 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
40934 	ZVAL_UNDEF(&tmp);
40935 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
40936 		ZVAL_STR(&tmp, zval_get_string(varname));
40937 		varname = &tmp;
40938 	}
40939 
40940 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
40941 	value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname));
40942 
40943 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
40944 		zend_string_release(Z_STR(tmp));
40945 	}
40946 
40947 	if (opline->extended_value & ZEND_ISSET) {
40948 		result = value && Z_TYPE_P(value) > IS_NULL &&
40949 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
40950 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
40951 		result = !value || !i_zend_is_true(value);
40952 	}
40953 
40954 	ZEND_VM_SMART_BRANCH(result, 1);
40955 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
40956 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
40957 }
40958 
40959 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
40960 {
40961 	USE_OPLINE
40962 	zval *value;
40963 	int result;
40964 
40965 	zval tmp, *varname;
40966 	zend_class_entry *ce;
40967 
40968 	SAVE_OPLINE();
40969 	varname = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
40970 	ZVAL_UNDEF(&tmp);
40971 	if (IS_CV != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
40972 		ZVAL_STR(&tmp, zval_get_string(varname));
40973 		varname = &tmp;
40974 	}
40975 
40976 	if (IS_UNUSED == IS_CONST) {
40977 		if (IS_CV == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
40978 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
40979 
40980 			/* check if static properties were destoyed */
40981 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
40982 				value = NULL;
40983 			}
40984 
40985 			goto is_static_prop_return;
40986 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
40987 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
40988 			if (UNEXPECTED(ce == NULL)) {
40989 				ZEND_ASSERT(EG(exception));
40990 				ZVAL_UNDEF(EX_VAR(opline->result.var));
40991 				HANDLE_EXCEPTION();
40992 			}
40993 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
40994 		}
40995 	} else {
40996 		if (IS_UNUSED == IS_UNUSED) {
40997 			ce = zend_fetch_class(NULL, opline->op2.num);
40998 			if (UNEXPECTED(ce == NULL)) {
40999 				ZEND_ASSERT(EG(exception));
41000 				if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
41001 					zend_string_release(Z_STR(tmp));
41002 				}
41003 
41004 				ZVAL_UNDEF(EX_VAR(opline->result.var));
41005 				HANDLE_EXCEPTION();
41006 			}
41007 		} else {
41008 			ce = Z_CE_P(EX_VAR(opline->op2.var));
41009 		}
41010 		if (IS_CV == IS_CONST &&
41011 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
41012 
41013 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
41014 
41015 			/* check if static properties were destoyed */
41016 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
41017 				value = NULL;
41018 			}
41019 
41020 			goto is_static_prop_return;
41021 		}
41022 	}
41023 
41024 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
41025 
41026 	if (IS_CV == IS_CONST && value) {
41027 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
41028 	}
41029 
41030 	if (IS_CV != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
41031 		zend_string_release(Z_STR(tmp));
41032 	}
41033 
41034 is_static_prop_return:
41035 	if (opline->extended_value & ZEND_ISSET) {
41036 		result = value && Z_TYPE_P(value) > IS_NULL &&
41037 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
41038 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
41039 		result = !value || !i_zend_is_true(value);
41040 	}
41041 
41042 	ZEND_VM_SMART_BRANCH(result, 1);
41043 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41044 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41045 }
41046 
41047 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41048 {
41049 	USE_OPLINE
41050 
41051 	zval *expr;
41052 	zend_bool result;
41053 
41054 	SAVE_OPLINE();
41055 	expr = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41056 
41057 try_instanceof:
41058 	if (Z_TYPE_P(expr) == IS_OBJECT) {
41059 		zend_class_entry *ce;
41060 
41061 		if (IS_UNUSED == IS_CONST) {
41062 			ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
41063 			if (UNEXPECTED(ce == NULL)) {
41064 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
41065 				if (EXPECTED(ce)) {
41066 					CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
41067 				}
41068 			}
41069 		} else if (IS_UNUSED == IS_UNUSED) {
41070 			ce = zend_fetch_class(NULL, opline->op2.num);
41071 			if (UNEXPECTED(ce == NULL)) {
41072 				ZEND_ASSERT(EG(exception));
41073 
41074 				ZVAL_UNDEF(EX_VAR(opline->result.var));
41075 				HANDLE_EXCEPTION();
41076 			}
41077 		} else {
41078 			ce = Z_CE_P(EX_VAR(opline->op2.var));
41079 		}
41080 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
41081 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
41082 		expr = Z_REFVAL_P(expr);
41083 		goto try_instanceof;
41084 	} else {
41085 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
41086 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
41087 		}
41088 		result = 0;
41089 	}
41090 
41091 	ZEND_VM_SMART_BRANCH(result, 1);
41092 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41093 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41094 }
41095 
41096 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41097 {
41098 	USE_OPLINE
41099 
41100 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
41101 
41102 	SAVE_OPLINE();
41103 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
41104 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
41105 
41106 
41107 		UNDEF_RESULT();
41108 		HANDLE_EXCEPTION();
41109 	}
41110 
41111 	/* Destroy the previously yielded value */
41112 	zval_ptr_dtor(&generator->value);
41113 
41114 	/* Destroy the previously yielded key */
41115 	zval_ptr_dtor(&generator->key);
41116 
41117 	/* Set the new yielded value */
41118 	if (IS_CV != IS_UNUSED) {
41119 
41120 
41121 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
41122 			/* Constants and temporary variables aren't yieldable by reference,
41123 			 * but we still allow them with a notice. */
41124 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
41125 				zval *value;
41126 
41127 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
41128 
41129 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41130 				ZVAL_COPY_VALUE(&generator->value, value);
41131 				if (IS_CV == IS_CONST) {
41132 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
41133 						Z_ADDREF(generator->value);
41134 					}
41135 				}
41136 			} else {
41137 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
41138 
41139 				/* If a function call result is yielded and the function did
41140 				 * not return by reference we throw a notice. */
41141 				if (IS_CV == IS_VAR &&
41142 				    (value_ptr == &EG(uninitialized_zval) ||
41143 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
41144 				      !Z_ISREF_P(value_ptr)))) {
41145 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
41146 				} else {
41147 					ZVAL_MAKE_REF(value_ptr);
41148 				}
41149 				ZVAL_COPY(&generator->value, value_ptr);
41150 
41151 			}
41152 		} else {
41153 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41154 
41155 			/* Consts, temporary variables and references need copying */
41156 			if (IS_CV == IS_CONST) {
41157 				ZVAL_COPY_VALUE(&generator->value, value);
41158 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
41159 					Z_ADDREF(generator->value);
41160 				}
41161 			} else if (IS_CV == IS_TMP_VAR) {
41162 				ZVAL_COPY_VALUE(&generator->value, value);
41163             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
41164 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
41165 
41166 			} else {
41167 				ZVAL_COPY_VALUE(&generator->value, value);
41168 				if (IS_CV == IS_CV) {
41169 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
41170 				}
41171 			}
41172 		}
41173 	} else {
41174 		/* If no value was specified yield null */
41175 		ZVAL_NULL(&generator->value);
41176 	}
41177 
41178 	/* Set the new yielded key */
41179 	if (IS_UNUSED != IS_UNUSED) {
41180 
41181 		zval *key = NULL;
41182 
41183 		/* Consts, temporary variables and references need copying */
41184 		if (IS_UNUSED == IS_CONST) {
41185 			ZVAL_COPY_VALUE(&generator->key, key);
41186 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
41187 				Z_ADDREF(generator->key);
41188 			}
41189 		} else if (IS_UNUSED == IS_TMP_VAR) {
41190 			ZVAL_COPY_VALUE(&generator->key, key);
41191 		} else if ((IS_UNUSED & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
41192 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
41193 
41194 		} else {
41195 			ZVAL_COPY_VALUE(&generator->key, key);
41196 			if (IS_UNUSED == IS_CV) {
41197 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
41198 			}
41199 		}
41200 
41201 		if (Z_TYPE(generator->key) == IS_LONG
41202 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
41203 		) {
41204 			generator->largest_used_integer_key = Z_LVAL(generator->key);
41205 		}
41206 	} else {
41207 		/* If no key was specified we use auto-increment keys */
41208 		generator->largest_used_integer_key++;
41209 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
41210 	}
41211 
41212 	if (RETURN_VALUE_USED(opline)) {
41213 		/* If the return value of yield is used set the send
41214 		 * target and initialize it to NULL */
41215 		generator->send_target = EX_VAR(opline->result.var);
41216 		ZVAL_NULL(generator->send_target);
41217 	} else {
41218 		generator->send_target = NULL;
41219 	}
41220 
41221 	/* We increment to the next op, so we are at the correct position when the
41222 	 * generator is resumed. */
41223 	ZEND_VM_INC_OPCODE();
41224 
41225 	/* The GOTO VM uses a local opline variable. We need to set the opline
41226 	 * variable in execute_data so we don't resume at an old position. */
41227 	SAVE_OPLINE();
41228 
41229 	ZEND_VM_RETURN();
41230 }
41231 
41232 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CHECK_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41233 {
41234 	USE_OPLINE
41235 	zval *op1 = EX_VAR(opline->op1.var);
41236 
41237 	if (UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41238 		SAVE_OPLINE();
41239 		GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41240 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41241 	}
41242 	ZEND_VM_NEXT_OPCODE();
41243 }
41244 
41245 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41246 {
41247 	USE_OPLINE
41248 	zval *op1 = EX_VAR(opline->op1.var);
41249 
41250 	if (IS_CV == IS_CV) {
41251 		if (UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
41252 			ZVAL_NEW_EMPTY_REF(op1);
41253 			Z_SET_REFCOUNT_P(op1, 2);
41254 			ZVAL_NULL(Z_REFVAL_P(op1));
41255 			ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
41256 		} else {
41257 			ZVAL_MAKE_REF(op1);
41258 			ZVAL_COPY(EX_VAR(opline->result.var), op1);
41259 		}
41260 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_INDIRECT)) {
41261 		op1 = Z_INDIRECT_P(op1);
41262 		if (EXPECTED(!Z_ISREF_P(op1))) {
41263 			ZVAL_MAKE_REF(op1);
41264 		}
41265 		GC_REFCOUNT(Z_REF_P(op1))++;
41266 		ZVAL_REF(EX_VAR(opline->result.var), Z_REF_P(op1));
41267 	} else {
41268 		ZVAL_COPY_VALUE(EX_VAR(opline->result.var), op1);
41269 	}
41270 	ZEND_VM_NEXT_OPCODE();
41271 }
41272 
41273 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_COUNT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41274 {
41275 	USE_OPLINE
41276 
41277 	zval *op1;
41278 	zend_long count;
41279 
41280 	SAVE_OPLINE();
41281 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41282 	do {
41283 		if (Z_TYPE_P(op1) == IS_ARRAY) {
41284 			count = zend_array_count(Z_ARRVAL_P(op1));
41285 			break;
41286 		} else if (Z_TYPE_P(op1) == IS_OBJECT) {
41287 			/* first, we check if the handler is defined */
41288 			if (Z_OBJ_HT_P(op1)->count_elements) {
41289 				if (SUCCESS == Z_OBJ_HT_P(op1)->count_elements(op1, &count)) {
41290 					break;
41291 				}
41292 			}
41293 
41294 			/* if not and the object implements Countable we call its count() method */
41295 			if (instanceof_function(Z_OBJCE_P(op1), zend_ce_countable)) {
41296 				zval retval;
41297 
41298 				zend_call_method_with_0_params(op1, NULL, NULL, "count", &retval);
41299 				count = zval_get_long(&retval);
41300 				zval_ptr_dtor(&retval);
41301 				break;
41302 			}
41303 
41304 			/* If There's no handler and it doesn't implement Countable then add a warning */
41305 			count = 1;
41306 		} else if (Z_TYPE_P(op1) == IS_NULL) {
41307 			count = 0;
41308 		} else {
41309 			count = 1;
41310 		}
41311 		zend_error(E_WARNING, "count(): Parameter must be an array or an object that implements Countable");
41312 	} while (0);
41313 
41314 	ZVAL_LONG(EX_VAR(opline->result.var), count);
41315 
41316 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41317 }
41318 
41319 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41320 {
41321 	USE_OPLINE
41322 
41323 	if (IS_CV == IS_UNUSED) {
41324 		if (UNEXPECTED(!EX(func)->common.scope)) {
41325 			SAVE_OPLINE();
41326 			zend_error(E_WARNING, "get_class() called without object from outside a class");
41327 			ZVAL_FALSE(EX_VAR(opline->result.var));
41328 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41329 		} else {
41330 			ZVAL_STR_COPY(EX_VAR(opline->result.var), EX(func)->common.scope->name);
41331 			ZEND_VM_NEXT_OPCODE();
41332 		}
41333 	} else {
41334 
41335 		zval *op1;
41336 
41337 		SAVE_OPLINE();
41338 		op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41339 		if (Z_TYPE_P(op1) == IS_OBJECT) {
41340 			ZVAL_STR_COPY(EX_VAR(opline->result.var), Z_OBJCE_P(op1)->name);
41341 		} else {
41342 			zend_error(E_WARNING, "get_class() expects parameter 1 to be object, %s given", zend_get_type_by_const(Z_TYPE_P(op1)));
41343 			ZVAL_FALSE(EX_VAR(opline->result.var));
41344 		}
41345 
41346 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41347 	}
41348 }
41349 
41350 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41351 {
41352 	USE_OPLINE
41353 
41354 	zval *op1;
41355 	zend_string *type;
41356 
41357 	SAVE_OPLINE();
41358 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41359 	type = zend_zval_get_type(op1);
41360 	if (EXPECTED(type)) {
41361 		ZVAL_INTERNED_STR(EX_VAR(opline->result.var), type);
41362 	} else {
41363 		ZVAL_STRING(EX_VAR(opline->result.var), "unknown type");
41364 	}
41365 
41366 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41367 }
41368 
41369 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41370 {
41371 	USE_OPLINE
41372 
41373 	zval *op1, *op2, *result;
41374 
41375 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41376 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41377 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
41378 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41379 			result = EX_VAR(opline->result.var);
41380 			fast_long_add_function(result, op1, op2);
41381 			ZEND_VM_NEXT_OPCODE();
41382 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41383 			result = EX_VAR(opline->result.var);
41384 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
41385 			ZEND_VM_NEXT_OPCODE();
41386 		}
41387 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
41388 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41389 			result = EX_VAR(opline->result.var);
41390 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
41391 			ZEND_VM_NEXT_OPCODE();
41392 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41393 			result = EX_VAR(opline->result.var);
41394 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
41395 			ZEND_VM_NEXT_OPCODE();
41396 		}
41397 	}
41398 
41399 	SAVE_OPLINE();
41400 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41401 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41402 	}
41403 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41404 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41405 	}
41406 	add_function(EX_VAR(opline->result.var), op1, op2);
41407 
41408 
41409 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41410 }
41411 
41412 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41413 {
41414 	USE_OPLINE
41415 
41416 	zval *op1, *op2, *result;
41417 
41418 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41419 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41420 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
41421 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41422 			result = EX_VAR(opline->result.var);
41423 			fast_long_sub_function(result, op1, op2);
41424 			ZEND_VM_NEXT_OPCODE();
41425 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41426 			result = EX_VAR(opline->result.var);
41427 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
41428 			ZEND_VM_NEXT_OPCODE();
41429 		}
41430 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
41431 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41432 			result = EX_VAR(opline->result.var);
41433 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
41434 			ZEND_VM_NEXT_OPCODE();
41435 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41436 			result = EX_VAR(opline->result.var);
41437 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
41438 			ZEND_VM_NEXT_OPCODE();
41439 		}
41440 	}
41441 
41442 	SAVE_OPLINE();
41443 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41444 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41445 	}
41446 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41447 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41448 	}
41449 	sub_function(EX_VAR(opline->result.var), op1, op2);
41450 
41451 
41452 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41453 }
41454 
41455 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41456 {
41457 	USE_OPLINE
41458 
41459 	zval *op1, *op2, *result;
41460 
41461 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41462 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41463 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
41464 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41465 			zend_long overflow;
41466 
41467 			result = EX_VAR(opline->result.var);
41468 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
41469 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
41470 			ZEND_VM_NEXT_OPCODE();
41471 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41472 			result = EX_VAR(opline->result.var);
41473 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
41474 			ZEND_VM_NEXT_OPCODE();
41475 		}
41476 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
41477 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41478 			result = EX_VAR(opline->result.var);
41479 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
41480 			ZEND_VM_NEXT_OPCODE();
41481 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41482 			result = EX_VAR(opline->result.var);
41483 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
41484 			ZEND_VM_NEXT_OPCODE();
41485 		}
41486 	}
41487 
41488 	SAVE_OPLINE();
41489 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41490 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41491 	}
41492 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41493 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41494 	}
41495 	mul_function(EX_VAR(opline->result.var), op1, op2);
41496 
41497 
41498 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41499 }
41500 
41501 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41502 {
41503 	USE_OPLINE
41504 
41505 	zval *op1, *op2;
41506 
41507 	SAVE_OPLINE();
41508 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41509 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
41510 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
41511 
41512 
41513 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41514 }
41515 
41516 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41517 {
41518 	USE_OPLINE
41519 
41520 	zval *op1, *op2, *result;
41521 
41522 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41523 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41524 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
41525 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41526 			result = EX_VAR(opline->result.var);
41527 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
41528 				SAVE_OPLINE();
41529 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
41530 				ZVAL_UNDEF(EX_VAR(opline->result.var));
41531 				HANDLE_EXCEPTION();
41532 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
41533 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
41534 				ZVAL_LONG(result, 0);
41535 			} else {
41536 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
41537 			}
41538 			ZEND_VM_NEXT_OPCODE();
41539 		}
41540 	}
41541 
41542 	SAVE_OPLINE();
41543 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41544 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41545 	}
41546 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41547 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41548 	}
41549 	mod_function(EX_VAR(opline->result.var), op1, op2);
41550 
41551 
41552 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41553 }
41554 
41555 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41556 {
41557 	USE_OPLINE
41558 
41559 	zval *op1, *op2;
41560 
41561 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41562 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41563 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
41564 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
41565 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
41566 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
41567 		ZEND_VM_NEXT_OPCODE();
41568 	}
41569 
41570 	SAVE_OPLINE();
41571 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41572 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41573 	}
41574 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41575 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41576 	}
41577 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
41578 
41579 
41580 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41581 }
41582 
41583 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41584 {
41585 	USE_OPLINE
41586 
41587 	zval *op1, *op2;
41588 
41589 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41590 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41591 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
41592 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
41593 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
41594 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
41595 		ZEND_VM_NEXT_OPCODE();
41596 	}
41597 
41598 	SAVE_OPLINE();
41599 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41600 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41601 	}
41602 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41603 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41604 	}
41605 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
41606 
41607 
41608 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41609 }
41610 
41611 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41612 {
41613 	USE_OPLINE
41614 
41615 	zval *op1, *op2;
41616 
41617 	SAVE_OPLINE();
41618 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41619 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
41620 	pow_function(EX_VAR(opline->result.var), op1, op2);
41621 
41622 
41623 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41624 }
41625 
41626 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41627 {
41628 	USE_OPLINE
41629 
41630 	zval *op1, *op2;
41631 
41632 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41633 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41634 
41635 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
41636 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
41637 		zend_string *op1_str = Z_STR_P(op1);
41638 		zend_string *op2_str = Z_STR_P(op2);
41639 		zend_string *str;
41640 
41641 		do {
41642 			if (IS_CV != IS_CONST) {
41643 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
41644 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
41645 
41646 					break;
41647 				}
41648 			}
41649 			if (IS_CV != IS_CONST) {
41650 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
41651 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
41652 
41653 					break;
41654 				}
41655 			}
41656 			if (IS_CV != IS_CONST && IS_CV != IS_CV &&
41657 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
41658 			    size_t len = ZSTR_LEN(op1_str);
41659 
41660 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
41661 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
41662 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
41663 				break;
41664 			} else {
41665 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
41666 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
41667 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
41668 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
41669 			}
41670 
41671 		} while (0);
41672 
41673 		ZEND_VM_NEXT_OPCODE();
41674 	} else {
41675 		SAVE_OPLINE();
41676 
41677 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
41678 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41679 		}
41680 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
41681 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41682 		}
41683 		concat_function(EX_VAR(opline->result.var), op1, op2);
41684 
41685 
41686 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41687 	}
41688 }
41689 
41690 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41691 {
41692 	USE_OPLINE
41693 
41694 	zval *op1, *op2;
41695 	int result;
41696 
41697 	SAVE_OPLINE();
41698 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41699 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
41700 	result = fast_is_identical_function(op1, op2);
41701 
41702 
41703 	ZEND_VM_SMART_BRANCH(result, 1);
41704 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41705 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41706 }
41707 
41708 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41709 {
41710 	USE_OPLINE
41711 
41712 	zval *op1, *op2;
41713 	int result;
41714 
41715 	SAVE_OPLINE();
41716 	op1 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41717 	op2 = _get_zval_ptr_cv_deref_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
41718 	result = fast_is_not_identical_function(op1, op2);
41719 
41720 
41721 	ZEND_VM_SMART_BRANCH(result, 1);
41722 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
41723 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41724 }
41725 
41726 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41727 {
41728 	USE_OPLINE
41729 
41730 	zval *op1, *op2, *result;
41731 
41732 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41733 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41734 	do {
41735 		int result;
41736 
41737 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
41738 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
41739 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
41740 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
41741 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
41742 			} else {
41743 				break;
41744 			}
41745 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
41746 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
41747 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
41748 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
41749 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
41750 			} else {
41751 				break;
41752 			}
41753 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
41754 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
41755 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
41756 					result = 1;
41757 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
41758 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
41759 						result = 0;
41760 					} else {
41761 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
41762 					}
41763 				} else {
41764 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
41765 				}
41766 
41767 
41768 			} else {
41769 				break;
41770 			}
41771 		} else {
41772 			break;
41773 		}
41774 		ZEND_VM_SMART_BRANCH(result, 0);
41775 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
41776 		ZEND_VM_NEXT_OPCODE();
41777 	} while (0);
41778 
41779 	SAVE_OPLINE();
41780 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
41781 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41782 	}
41783 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
41784 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41785 	}
41786 	result = EX_VAR(opline->result.var);
41787 	compare_function(result, op1, op2);
41788 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
41789 
41790 
41791 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41792 }
41793 
41794 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41795 {
41796 	USE_OPLINE
41797 
41798 	zval *op1, *op2, *result;
41799 
41800 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41801 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41802 	do {
41803 		int result;
41804 
41805 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
41806 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
41807 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
41808 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
41809 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
41810 			} else {
41811 				break;
41812 			}
41813 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
41814 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
41815 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
41816 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
41817 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
41818 			} else {
41819 				break;
41820 			}
41821 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
41822 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
41823 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
41824 					result = 0;
41825 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
41826 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
41827 						result = 1;
41828 					} else {
41829 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
41830 					}
41831 				} else {
41832 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
41833 				}
41834 
41835 
41836 			} else {
41837 				break;
41838 			}
41839 		} else {
41840 			break;
41841 		}
41842 		ZEND_VM_SMART_BRANCH(result, 0);
41843 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
41844 		ZEND_VM_NEXT_OPCODE();
41845 	} while (0);
41846 
41847 	SAVE_OPLINE();
41848 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
41849 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41850 	}
41851 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
41852 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41853 	}
41854 	result = EX_VAR(opline->result.var);
41855 	compare_function(result, op1, op2);
41856 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
41857 
41858 
41859 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41860 }
41861 
41862 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41863 {
41864 	USE_OPLINE
41865 
41866 	zval *op1, *op2, *result;
41867 
41868 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41869 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41870 	do {
41871 		int result;
41872 
41873 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
41874 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41875 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
41876 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41877 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
41878 			} else {
41879 				break;
41880 			}
41881 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
41882 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41883 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
41884 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41885 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
41886 			} else {
41887 				break;
41888 			}
41889 		} else {
41890 			break;
41891 		}
41892 		ZEND_VM_SMART_BRANCH(result, 0);
41893 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
41894 		ZEND_VM_NEXT_OPCODE();
41895 	} while (0);
41896 
41897 	SAVE_OPLINE();
41898 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41899 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41900 	}
41901 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41902 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41903 	}
41904 	result = EX_VAR(opline->result.var);
41905 	compare_function(result, op1, op2);
41906 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
41907 
41908 
41909 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41910 }
41911 
41912 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41913 {
41914 	USE_OPLINE
41915 
41916 	zval *op1, *op2, *result;
41917 
41918 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41919 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41920 	do {
41921 		int result;
41922 
41923 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
41924 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41925 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
41926 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41927 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
41928 			} else {
41929 				break;
41930 			}
41931 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
41932 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
41933 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
41934 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41935 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
41936 			} else {
41937 				break;
41938 			}
41939 		} else {
41940 			break;
41941 		}
41942 		ZEND_VM_SMART_BRANCH(result, 0);
41943 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
41944 		ZEND_VM_NEXT_OPCODE();
41945 	} while (0);
41946 
41947 	SAVE_OPLINE();
41948 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41949 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41950 	}
41951 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41952 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41953 	}
41954 	result = EX_VAR(opline->result.var);
41955 	compare_function(result, op1, op2);
41956 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
41957 
41958 
41959 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41960 }
41961 
41962 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41963 {
41964 	USE_OPLINE
41965 
41966 	zval *op1, *op2;
41967 
41968 	SAVE_OPLINE();
41969 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
41970 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
41971 	compare_function(EX_VAR(opline->result.var), op1, op2);
41972 
41973 
41974 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
41975 }
41976 
41977 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
41978 {
41979 	USE_OPLINE
41980 
41981 	zval *op1, *op2;
41982 
41983 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
41984 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
41985 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
41986 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
41987 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
41988 		ZEND_VM_NEXT_OPCODE();
41989 	}
41990 
41991 	SAVE_OPLINE();
41992 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
41993 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
41994 	}
41995 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
41996 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
41997 	}
41998 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
41999 
42000 
42001 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42002 }
42003 
42004 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42005 {
42006 	USE_OPLINE
42007 
42008 	zval *op1, *op2;
42009 
42010 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
42011 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
42012 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
42013 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42014 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
42015 		ZEND_VM_NEXT_OPCODE();
42016 	}
42017 
42018 	SAVE_OPLINE();
42019 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42020 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42021 	}
42022 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42023 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42024 	}
42025 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
42026 
42027 
42028 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42029 }
42030 
42031 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42032 {
42033 	USE_OPLINE
42034 
42035 	zval *op1, *op2;
42036 
42037 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
42038 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
42039 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
42040 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
42041 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
42042 		ZEND_VM_NEXT_OPCODE();
42043 	}
42044 
42045 	SAVE_OPLINE();
42046 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
42047 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
42048 	}
42049 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
42050 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
42051 	}
42052 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
42053 
42054 
42055 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42056 }
42057 
42058 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42059 {
42060 	USE_OPLINE
42061 
42062 	zval *op1, *op2;
42063 
42064 	SAVE_OPLINE();
42065 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
42066 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42067 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
42068 
42069 
42070 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42071 }
42072 
42073 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42074 {
42075 	USE_OPLINE
42076 	zend_free_op free_op_data1;
42077 	zval *object;
42078 	zval *property;
42079 	zval *value;
42080 	zval *zptr;
42081 
42082 	SAVE_OPLINE();
42083 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42084 
42085 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
42086 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42087 	}
42088 
42089 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42090 
42091 	do {
42092 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
42093 
42094 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
42095 			ZVAL_DEREF(object);
42096 			if (UNEXPECTED(!make_real_object(object))) {
42097 				zend_string *property_name = zval_get_string(property);
42098 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
42099 				zend_string_release(property_name);
42100 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42101 					ZVAL_NULL(EX_VAR(opline->result.var));
42102 				}
42103 				break;
42104 			}
42105 		}
42106 
42107 		/* here we are sure we are dealing with an object */
42108 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
42109 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
42110 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
42111 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42112 					ZVAL_NULL(EX_VAR(opline->result.var));
42113 				}
42114 			} else {
42115 				ZVAL_DEREF(zptr);
42116 				SEPARATE_ZVAL_NOREF(zptr);
42117 
42118 				binary_op(zptr, zptr, value);
42119 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42120 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
42121 				}
42122 			}
42123 		} else {
42124 			zend_assign_op_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
42125 		}
42126 	} while (0);
42127 
42128 	FREE_OP(free_op_data1);
42129 
42130 
42131 	/* assign_obj has two opcodes! */
42132 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
42133 }
42134 
42135 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42136 {
42137 	USE_OPLINE
42138 	zend_free_op free_op_data1;
42139 	zval *var_ptr;
42140 	zval *value, *container, *dim;
42141 
42142 	SAVE_OPLINE();
42143 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42144 
42145 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42146 assign_dim_op_array:
42147 		SEPARATE_ARRAY(container);
42148 assign_dim_op_new_array:
42149 		if (IS_CV == IS_UNUSED) {
42150 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
42151 			if (UNEXPECTED(!var_ptr)) {
42152 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
42153 				goto assign_dim_op_ret_null;
42154 			}
42155 		} else {
42156 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
42157 
42158 			if (IS_CV == IS_CONST) {
42159 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
42160 			} else {
42161 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
42162 			}
42163 			if (UNEXPECTED(!var_ptr)) {
42164 				goto assign_dim_op_ret_null;
42165 			}
42166 			ZVAL_DEREF(var_ptr);
42167 			SEPARATE_ZVAL_NOREF(var_ptr);
42168 		}
42169 
42170 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
42171 
42172 		binary_op(var_ptr, var_ptr, value);
42173 
42174 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42175 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
42176 		}
42177 	} else {
42178 		if (EXPECTED(Z_ISREF_P(container))) {
42179 			container = Z_REFVAL_P(container);
42180 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42181 				goto assign_dim_op_array;
42182 			}
42183 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
42184 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
42185 assign_dim_op_convert_to_array:
42186 			ZVAL_NEW_ARR(container);
42187 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
42188 			goto assign_dim_op_new_array;
42189 		}
42190 
42191 		dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42192 
42193 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
42194 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
42195 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
42196 		} else {
42197 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
42198 				if (IS_CV == IS_UNUSED) {
42199 					zend_throw_error(NULL, "[] operator not supported for strings");
42200 				} else {
42201 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
42202 					if (EXPECTED(EG(exception) == NULL)) {
42203 						zend_wrong_string_offset(EXECUTE_DATA_C);
42204 					}
42205 				}
42206 				UNDEF_RESULT();
42207 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
42208 				goto assign_dim_op_convert_to_array;
42209 			} else {
42210 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
42211 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
42212 				}
42213 assign_dim_op_ret_null:
42214 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42215 					ZVAL_NULL(EX_VAR(opline->result.var));
42216 				}
42217 			}
42218 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
42219 		}
42220 	}
42221 
42222 	FREE_OP(free_op_data1);
42223 
42224 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
42225 }
42226 
42227 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42228 {
42229 	USE_OPLINE
42230 
42231 	zval *var_ptr;
42232 	zval *value;
42233 
42234 	SAVE_OPLINE();
42235 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42236 	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42237 
42238 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
42239 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42240 			ZVAL_NULL(EX_VAR(opline->result.var));
42241 		}
42242 	} else {
42243 		ZVAL_DEREF(var_ptr);
42244 		SEPARATE_ZVAL_NOREF(var_ptr);
42245 
42246 		binary_op(var_ptr, var_ptr, value);
42247 
42248 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42249 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
42250 		}
42251 	}
42252 
42253 
42254 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42255 }
42256 
42257 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42258 {
42259 #if 1 && IS_CV == IS_UNUSED
42260 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42261 #else
42262 # if 0 || IS_CV != IS_UNUSED
42263 	USE_OPLINE
42264 
42265 	if (EXPECTED(1)) {
42266 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42267 	}
42268 	if (EXPECTED(0)) {
42269 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42270 	}
42271 # endif
42272 
42273 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42274 #endif
42275 }
42276 
42277 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42278 {
42279 #if 1 && IS_CV == IS_UNUSED
42280 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42281 #else
42282 # if 0 || IS_CV != IS_UNUSED
42283 	USE_OPLINE
42284 
42285 	if (EXPECTED(0)) {
42286 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42287 	}
42288 	if (EXPECTED(1)) {
42289 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42290 	}
42291 # endif
42292 
42293 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42294 #endif
42295 }
42296 
42297 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
42298 {
42299 #if 1 && IS_CV == IS_UNUSED
42300 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42301 #else
42302 # if 0 || IS_CV != IS_UNUSED
42303 	USE_OPLINE
42304 
42305 	if (EXPECTED(0)) {
42306 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42307 	}
42308 	if (EXPECTED(0)) {
42309 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42310 	}
42311 # endif
42312 
42313 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_CV(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42314 #endif
42315 }
42316 
42317 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42318 {
42319 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42320 }
42321 
42322 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42323 {
42324 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42325 }
42326 
42327 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42328 {
42329 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42330 }
42331 
42332 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42333 {
42334 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42335 }
42336 
42337 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42338 {
42339 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42340 }
42341 
42342 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42343 {
42344 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42345 }
42346 
42347 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42348 {
42349 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42350 }
42351 
42352 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42353 {
42354 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42355 }
42356 
42357 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42358 {
42359 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42360 }
42361 
42362 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42363 {
42364 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42365 }
42366 
42367 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42368 {
42369 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42370 }
42371 
42372 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42373 {
42374 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42375 }
42376 
42377 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42378 {
42379 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42380 }
42381 
42382 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42383 {
42384 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42385 }
42386 
42387 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42388 {
42389 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42390 }
42391 
42392 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42393 {
42394 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42395 }
42396 
42397 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42398 {
42399 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42400 }
42401 
42402 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42403 {
42404 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42405 }
42406 
42407 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42408 {
42409 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42410 }
42411 
42412 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42413 {
42414 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42415 }
42416 
42417 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42418 {
42419 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42420 }
42421 
42422 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42423 {
42424 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42425 }
42426 
42427 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42428 {
42429 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42430 }
42431 
42432 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42433 {
42434 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42435 }
42436 
42437 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42438 {
42439 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42440 }
42441 
42442 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42443 {
42444 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42445 }
42446 
42447 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42448 {
42449 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42450 }
42451 
42452 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42453 {
42454 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42455 }
42456 
42457 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42458 {
42459 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42460 }
42461 
42462 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42463 {
42464 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42465 }
42466 
42467 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42468 {
42469 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42470 }
42471 
42472 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42473 {
42474 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42475 }
42476 
42477 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42478 {
42479 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42480 }
42481 
42482 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42483 {
42484 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42485 }
42486 
42487 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42488 {
42489 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42490 }
42491 
42492 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42493 {
42494 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_CV_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42495 }
42496 
42497 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
42498 {
42499 	USE_OPLINE
42500 
42501 	zval *object;
42502 	zval *property;
42503 	zval *zptr;
42504 
42505 	SAVE_OPLINE();
42506 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42507 
42508 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
42509 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42510 	}
42511 
42512 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42513 
42514 	do {
42515 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
42516 			ZVAL_DEREF(object);
42517 			if (UNEXPECTED(!make_real_object(object))) {
42518 				zend_string *property_name = zval_get_string(property);
42519 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
42520 				zend_string_release(property_name);
42521 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42522 					ZVAL_NULL(EX_VAR(opline->result.var));
42523 				}
42524 				break;
42525 			}
42526 		}
42527 
42528 		/* here we are sure we are dealing with an object */
42529 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
42530 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
42531 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
42532 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42533 					ZVAL_NULL(EX_VAR(opline->result.var));
42534 				}
42535 			} else {
42536 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
42537 					if (inc) {
42538 						fast_long_increment_function(zptr);
42539 					} else {
42540 						fast_long_decrement_function(zptr);
42541 					}
42542 				} else {
42543 					ZVAL_DEREF(zptr);
42544 					SEPARATE_ZVAL_NOREF(zptr);
42545 
42546 					if (inc) {
42547 						increment_function(zptr);
42548 					} else {
42549 						decrement_function(zptr);
42550 					}
42551 				}
42552 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
42553 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
42554 				}
42555 			}
42556 		} else {
42557 			zend_pre_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
42558 		}
42559 	} while (0);
42560 
42561 
42562 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42563 }
42564 
42565 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42566 {
42567 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42568 }
42569 
42570 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42571 {
42572 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42573 }
42574 
42575 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_CV(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
42576 {
42577 	USE_OPLINE
42578 
42579 	zval *object;
42580 	zval *property;
42581 	zval *zptr;
42582 
42583 	SAVE_OPLINE();
42584 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42585 
42586 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
42587 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42588 	}
42589 
42590 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42591 
42592 	do {
42593 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
42594 			ZVAL_DEREF(object);
42595 			if (UNEXPECTED(!make_real_object(object))) {
42596 				zend_string *property_name = zval_get_string(property);
42597 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
42598 				zend_string_release(property_name);
42599 				ZVAL_NULL(EX_VAR(opline->result.var));
42600 				break;
42601 			}
42602 		}
42603 
42604 		/* here we are sure we are dealing with an object */
42605 
42606 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
42607 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
42608 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
42609 				ZVAL_NULL(EX_VAR(opline->result.var));
42610 			} else {
42611 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
42612 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
42613 					if (inc) {
42614 						fast_long_increment_function(zptr);
42615 					} else {
42616 						fast_long_decrement_function(zptr);
42617 					}
42618 				} else {
42619 					ZVAL_DEREF(zptr);
42620 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
42621 					zval_opt_copy_ctor(zptr);
42622 					if (inc) {
42623 						increment_function(zptr);
42624 					} else {
42625 						decrement_function(zptr);
42626 					}
42627 				}
42628 			}
42629 		} else {
42630 			zend_post_incdec_overloaded_property(object, property, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
42631 		}
42632 	} while (0);
42633 
42634 
42635 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42636 }
42637 
42638 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42639 {
42640 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CV(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42641 }
42642 
42643 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42644 {
42645 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_CV(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
42646 }
42647 
42648 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42649 {
42650 	USE_OPLINE
42651 
42652 	zval *container, *dim, *value, *result;
42653 
42654 	SAVE_OPLINE();
42655 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
42656 	dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
42657 	if (IS_CV != IS_CONST) {
42658 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42659 fetch_dim_r_array:
42660 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
42661 			result = EX_VAR(opline->result.var);
42662 			ZVAL_COPY_UNREF(result, value);
42663 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
42664 			container = Z_REFVAL_P(container);
42665 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
42666 				goto fetch_dim_r_array;
42667 			} else {
42668 				goto fetch_dim_r_slow;
42669 			}
42670 		} else {
42671 fetch_dim_r_slow:
42672 			result = EX_VAR(opline->result.var);
42673 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
42674 		}
42675 	} else {
42676 		result = EX_VAR(opline->result.var);
42677 		zend_fetch_dimension_address_read_R(result, container, dim, IS_CV EXECUTE_DATA_CC);
42678 	}
42679 
42680 
42681 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42682 }
42683 
42684 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42685 {
42686 	USE_OPLINE
42687 	zend_free_op free_op1;
42688 	zval *container;
42689 
42690 	SAVE_OPLINE();
42691 	container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
42692 
42693 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
42694 
42695 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
42696 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
42697 	}
42698 
42699 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42700 }
42701 
42702 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42703 {
42704 	USE_OPLINE
42705 	zend_free_op free_op1;
42706 	zval *container;
42707 
42708 	SAVE_OPLINE();
42709 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42710 
42711 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
42712 
42713 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
42714 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
42715 	}
42716 
42717 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42718 }
42719 
42720 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42721 {
42722 	USE_OPLINE
42723 
42724 	zval *container;
42725 
42726 	SAVE_OPLINE();
42727 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
42728 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
42729 
42730 
42731 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42732 }
42733 
42734 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42735 {
42736 	USE_OPLINE
42737 	zval *container;
42738 	zend_free_op free_op1;
42739 
42740 	SAVE_OPLINE();
42741 
42742 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
42743         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
42744             zend_throw_error(NULL, "Cannot use temporary expression in write context");
42745 
42746 
42747 			ZVAL_UNDEF(EX_VAR(opline->result.var));
42748 			HANDLE_EXCEPTION();
42749         }
42750 		container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
42751 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
42752 		if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
42753 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
42754 		}
42755 
42756 
42757 	} else {
42758 		if (IS_CV == IS_UNUSED) {
42759 			zend_throw_error(NULL, "Cannot use [] for reading");
42760 
42761 
42762 			ZVAL_UNDEF(EX_VAR(opline->result.var));
42763 			HANDLE_EXCEPTION();
42764 		}
42765 		container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
42766 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
42767 
42768 
42769 	}
42770 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42771 }
42772 
42773 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42774 {
42775 	USE_OPLINE
42776 	zend_free_op free_op1;
42777 	zval *container;
42778 
42779 	SAVE_OPLINE();
42780 	container = _get_zval_ptr_cv_undef_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
42781 
42782 	zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
42783 
42784 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
42785 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
42786 	}
42787 
42788 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42789 }
42790 
42791 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42792 {
42793 	USE_OPLINE
42794 
42795 	zval *container;
42796 
42797 	zval *offset;
42798 
42799 	SAVE_OPLINE();
42800 	container = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
42801 
42802 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
42803 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42804 	}
42805 
42806 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42807 
42808 	if (IS_CV == IS_CONST ||
42809 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
42810 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
42811 			container = Z_REFVAL_P(container);
42812 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
42813 				goto fetch_obj_r_no_object;
42814 			}
42815 		} else {
42816 			goto fetch_obj_r_no_object;
42817 		}
42818 	}
42819 
42820 	/* here we are sure we are dealing with an object */
42821 	do {
42822 		zend_object *zobj = Z_OBJ_P(container);
42823 		zval *retval;
42824 
42825 		if (IS_CV == IS_CONST &&
42826 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
42827 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
42828 
42829 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
42830 				retval = OBJ_PROP(zobj, prop_offset);
42831 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
42832 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
42833 					break;
42834 				}
42835 			} else if (EXPECTED(zobj->properties != NULL)) {
42836 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
42837 				if (EXPECTED(retval)) {
42838 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
42839 					break;
42840 				}
42841 			}
42842 		}
42843 
42844 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
42845 			zend_string *property_name;
42846 fetch_obj_r_no_object:
42847 			property_name = zval_get_string(offset);
42848 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
42849 			zend_string_release(property_name);
42850 			ZVAL_NULL(EX_VAR(opline->result.var));
42851 		} else {
42852 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
42853 
42854 			if (retval != EX_VAR(opline->result.var)) {
42855 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
42856 			}
42857 		}
42858 	} while (0);
42859 
42860 
42861 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42862 }
42863 
42864 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42865 {
42866 	USE_OPLINE
42867 	zend_free_op free_op1;
42868 	zval *property;
42869 	zval *container;
42870 
42871 	SAVE_OPLINE();
42872 
42873 	container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
42874 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
42875 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42876 	}
42877 
42878 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42879 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
42880 
42881 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
42882 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
42883 	}
42884 
42885 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42886 }
42887 
42888 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42889 {
42890 	USE_OPLINE
42891 	zend_free_op free_op1;
42892 	zval *property;
42893 	zval *container;
42894 
42895 	SAVE_OPLINE();
42896 	container = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
42897 
42898 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
42899 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42900 	}
42901 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42902 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
42903 
42904 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
42905 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
42906 	}
42907 
42908 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42909 }
42910 
42911 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42912 {
42913 	USE_OPLINE
42914 
42915 	zval *container;
42916 
42917 	zval *offset;
42918 
42919 	SAVE_OPLINE();
42920 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
42921 
42922 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
42923 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42924 	}
42925 
42926 	offset  = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
42927 
42928 	if (IS_CV == IS_CONST ||
42929 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
42930 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
42931 			container = Z_REFVAL_P(container);
42932 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
42933 				goto fetch_obj_is_no_object;
42934 			}
42935 		} else {
42936 			goto fetch_obj_is_no_object;
42937 		}
42938 	}
42939 
42940 	/* here we are sure we are dealing with an object */
42941 	do {
42942 		zend_object *zobj = Z_OBJ_P(container);
42943 		zval *retval;
42944 
42945 		if (IS_CV == IS_CONST &&
42946 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
42947 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
42948 
42949 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
42950 				retval = OBJ_PROP(zobj, prop_offset);
42951 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
42952 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
42953 					break;
42954 				}
42955 			} else if (EXPECTED(zobj->properties != NULL)) {
42956 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
42957 				if (EXPECTED(retval)) {
42958 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
42959 					break;
42960 				}
42961 			}
42962 		}
42963 
42964 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
42965 fetch_obj_is_no_object:
42966 			ZVAL_NULL(EX_VAR(opline->result.var));
42967 		} else {
42968 
42969 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
42970 
42971 			if (retval != EX_VAR(opline->result.var)) {
42972 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
42973 			}
42974 		}
42975 	} while (0);
42976 
42977 
42978 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
42979 }
42980 
42981 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
42982 {
42983 	USE_OPLINE
42984 	zval *container;
42985 
42986 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
42987 		/* Behave like FETCH_OBJ_W */
42988 		zend_free_op free_op1;
42989 		zval *property;
42990 
42991 		SAVE_OPLINE();
42992 		container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
42993 
42994 		if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
42995 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
42996 		}
42997 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
42998 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
42999 
43000 
43001 			ZVAL_UNDEF(EX_VAR(opline->result.var));
43002 			HANDLE_EXCEPTION();
43003 		}
43004 		property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43005 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
43006 
43007 		if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
43008 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
43009 		}
43010 
43011 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43012 	} else {
43013 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43014 	}
43015 }
43016 
43017 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43018 {
43019 	USE_OPLINE
43020 	zend_free_op free_op1;
43021 	zval *container, *property;
43022 
43023 	SAVE_OPLINE();
43024 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
43025 
43026 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
43027 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43028 	}
43029 
43030 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43031 
43032 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, IS_CV, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
43033 
43034 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
43035 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
43036 	}
43037 
43038 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43039 }
43040 
43041 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43042 {
43043 	USE_OPLINE
43044 
43045 	zval *container;
43046 
43047 	SAVE_OPLINE();
43048 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
43049 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC) EXECUTE_DATA_CC);
43050 
43051 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
43052 }
43053 
43054 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43055 {
43056 	USE_OPLINE
43057 
43058 	zval *object, *property, *value, tmp;
43059 
43060 	SAVE_OPLINE();
43061 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43062 
43063 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
43064 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43065 	}
43066 
43067 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43068 	value = EX_CONSTANT((opline+1)->op1);
43069 
43070 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
43071 		do {
43072 			if (Z_ISREF_P(object)) {
43073 				object = Z_REFVAL_P(object);
43074 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
43075 					break;
43076 				}
43077 			}
43078 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
43079 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
43080 				zend_object *obj;
43081 
43082 				zval_ptr_dtor(object);
43083 				object_init(object);
43084 				Z_ADDREF_P(object);
43085 				obj = Z_OBJ_P(object);
43086 				zend_error(E_WARNING, "Creating default object from empty value");
43087 				if (GC_REFCOUNT(obj) == 1) {
43088 					/* the enclosing container was deleted, obj is unreferenced */
43089 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43090 						ZVAL_NULL(EX_VAR(opline->result.var));
43091 					}
43092 
43093 					OBJ_RELEASE(obj);
43094 					goto exit_assign_obj;
43095 				}
43096 				Z_DELREF_P(object);
43097 			} else {
43098 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
43099 					zend_string *property_name = zval_get_string(property);
43100 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43101 					zend_string_release(property_name);
43102 				}
43103 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43104 					ZVAL_NULL(EX_VAR(opline->result.var));
43105 				}
43106 
43107 				goto exit_assign_obj;
43108 			}
43109 		} while (0);
43110 	}
43111 
43112 	if (IS_CV == IS_CONST &&
43113 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
43114 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
43115 		zend_object *zobj = Z_OBJ_P(object);
43116 		zval *property_val;
43117 
43118 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
43119 			property_val = OBJ_PROP(zobj, prop_offset);
43120 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
43121 fast_assign_obj:
43122 				value = zend_assign_to_variable(property_val, value, IS_CONST);
43123 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43124 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43125 				}
43126 				goto exit_assign_obj;
43127 			}
43128 		} else {
43129 			if (EXPECTED(zobj->properties != NULL)) {
43130 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
43131 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
43132 						GC_REFCOUNT(zobj->properties)--;
43133 					}
43134 					zobj->properties = zend_array_dup(zobj->properties);
43135 				}
43136 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
43137 				if (property_val) {
43138 					goto fast_assign_obj;
43139 				}
43140 			}
43141 
43142 			if (!zobj->ce->__set) {
43143 
43144 				if (EXPECTED(zobj->properties == NULL)) {
43145 					rebuild_object_properties(zobj);
43146 				}
43147 				if (IS_CONST == IS_CONST) {
43148 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
43149 						Z_ADDREF_P(value);
43150 					}
43151 				} else if (IS_CONST != IS_TMP_VAR) {
43152 					if (Z_ISREF_P(value)) {
43153 						if (IS_CONST == IS_VAR) {
43154 							zend_reference *ref = Z_REF_P(value);
43155 							if (--GC_REFCOUNT(ref) == 0) {
43156 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
43157 								efree_size(ref, sizeof(zend_reference));
43158 								value = &tmp;
43159 							} else {
43160 								value = Z_REFVAL_P(value);
43161 								if (Z_REFCOUNTED_P(value)) {
43162 									Z_ADDREF_P(value);
43163 								}
43164 							}
43165 						} else {
43166 							value = Z_REFVAL_P(value);
43167 							if (Z_REFCOUNTED_P(value)) {
43168 								Z_ADDREF_P(value);
43169 							}
43170 						}
43171 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
43172 						Z_ADDREF_P(value);
43173 					}
43174 				}
43175 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
43176 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43177 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43178 				}
43179 				goto exit_assign_obj;
43180 			}
43181 		}
43182 	}
43183 
43184 	if (!Z_OBJ_HT_P(object)->write_property) {
43185 		zend_string *property_name = zval_get_string(property);
43186 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43187 		zend_string_release(property_name);
43188 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43189 			ZVAL_NULL(EX_VAR(opline->result.var));
43190 		}
43191 
43192 		goto exit_assign_obj;
43193 	}
43194 
43195 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
43196 		ZVAL_DEREF(value);
43197 	}
43198 
43199 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
43200 
43201 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43202 		ZVAL_COPY(EX_VAR(opline->result.var), value);
43203 	}
43204 
43205 exit_assign_obj:
43206 
43207 
43208 	/* assign_obj has two opcodes! */
43209 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43210 }
43211 
43212 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43213 {
43214 	USE_OPLINE
43215 	zend_free_op free_op_data;
43216 	zval *object, *property, *value, tmp;
43217 
43218 	SAVE_OPLINE();
43219 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43220 
43221 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
43222 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43223 	}
43224 
43225 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43226 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43227 
43228 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
43229 		do {
43230 			if (Z_ISREF_P(object)) {
43231 				object = Z_REFVAL_P(object);
43232 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
43233 					break;
43234 				}
43235 			}
43236 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
43237 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
43238 				zend_object *obj;
43239 
43240 				zval_ptr_dtor(object);
43241 				object_init(object);
43242 				Z_ADDREF_P(object);
43243 				obj = Z_OBJ_P(object);
43244 				zend_error(E_WARNING, "Creating default object from empty value");
43245 				if (GC_REFCOUNT(obj) == 1) {
43246 					/* the enclosing container was deleted, obj is unreferenced */
43247 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43248 						ZVAL_NULL(EX_VAR(opline->result.var));
43249 					}
43250 					zval_ptr_dtor_nogc(free_op_data);
43251 					OBJ_RELEASE(obj);
43252 					goto exit_assign_obj;
43253 				}
43254 				Z_DELREF_P(object);
43255 			} else {
43256 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
43257 					zend_string *property_name = zval_get_string(property);
43258 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43259 					zend_string_release(property_name);
43260 				}
43261 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43262 					ZVAL_NULL(EX_VAR(opline->result.var));
43263 				}
43264 				zval_ptr_dtor_nogc(free_op_data);
43265 				goto exit_assign_obj;
43266 			}
43267 		} while (0);
43268 	}
43269 
43270 	if (IS_CV == IS_CONST &&
43271 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
43272 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
43273 		zend_object *zobj = Z_OBJ_P(object);
43274 		zval *property_val;
43275 
43276 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
43277 			property_val = OBJ_PROP(zobj, prop_offset);
43278 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
43279 fast_assign_obj:
43280 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
43281 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43282 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43283 				}
43284 				goto exit_assign_obj;
43285 			}
43286 		} else {
43287 			if (EXPECTED(zobj->properties != NULL)) {
43288 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
43289 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
43290 						GC_REFCOUNT(zobj->properties)--;
43291 					}
43292 					zobj->properties = zend_array_dup(zobj->properties);
43293 				}
43294 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
43295 				if (property_val) {
43296 					goto fast_assign_obj;
43297 				}
43298 			}
43299 
43300 			if (!zobj->ce->__set) {
43301 
43302 				if (EXPECTED(zobj->properties == NULL)) {
43303 					rebuild_object_properties(zobj);
43304 				}
43305 				if (IS_TMP_VAR == IS_CONST) {
43306 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
43307 						Z_ADDREF_P(value);
43308 					}
43309 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
43310 					if (Z_ISREF_P(value)) {
43311 						if (IS_TMP_VAR == IS_VAR) {
43312 							zend_reference *ref = Z_REF_P(value);
43313 							if (--GC_REFCOUNT(ref) == 0) {
43314 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
43315 								efree_size(ref, sizeof(zend_reference));
43316 								value = &tmp;
43317 							} else {
43318 								value = Z_REFVAL_P(value);
43319 								if (Z_REFCOUNTED_P(value)) {
43320 									Z_ADDREF_P(value);
43321 								}
43322 							}
43323 						} else {
43324 							value = Z_REFVAL_P(value);
43325 							if (Z_REFCOUNTED_P(value)) {
43326 								Z_ADDREF_P(value);
43327 							}
43328 						}
43329 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
43330 						Z_ADDREF_P(value);
43331 					}
43332 				}
43333 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
43334 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43335 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43336 				}
43337 				goto exit_assign_obj;
43338 			}
43339 		}
43340 	}
43341 
43342 	if (!Z_OBJ_HT_P(object)->write_property) {
43343 		zend_string *property_name = zval_get_string(property);
43344 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43345 		zend_string_release(property_name);
43346 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43347 			ZVAL_NULL(EX_VAR(opline->result.var));
43348 		}
43349 		zval_ptr_dtor_nogc(free_op_data);
43350 		goto exit_assign_obj;
43351 	}
43352 
43353 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
43354 		ZVAL_DEREF(value);
43355 	}
43356 
43357 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
43358 
43359 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43360 		ZVAL_COPY(EX_VAR(opline->result.var), value);
43361 	}
43362 	zval_ptr_dtor_nogc(free_op_data);
43363 exit_assign_obj:
43364 
43365 
43366 	/* assign_obj has two opcodes! */
43367 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43368 }
43369 
43370 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43371 {
43372 	USE_OPLINE
43373 	zend_free_op free_op_data;
43374 	zval *object, *property, *value, tmp;
43375 
43376 	SAVE_OPLINE();
43377 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43378 
43379 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
43380 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43381 	}
43382 
43383 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43384 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43385 
43386 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
43387 		do {
43388 			if (Z_ISREF_P(object)) {
43389 				object = Z_REFVAL_P(object);
43390 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
43391 					break;
43392 				}
43393 			}
43394 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
43395 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
43396 				zend_object *obj;
43397 
43398 				zval_ptr_dtor(object);
43399 				object_init(object);
43400 				Z_ADDREF_P(object);
43401 				obj = Z_OBJ_P(object);
43402 				zend_error(E_WARNING, "Creating default object from empty value");
43403 				if (GC_REFCOUNT(obj) == 1) {
43404 					/* the enclosing container was deleted, obj is unreferenced */
43405 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43406 						ZVAL_NULL(EX_VAR(opline->result.var));
43407 					}
43408 					zval_ptr_dtor_nogc(free_op_data);
43409 					OBJ_RELEASE(obj);
43410 					goto exit_assign_obj;
43411 				}
43412 				Z_DELREF_P(object);
43413 			} else {
43414 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
43415 					zend_string *property_name = zval_get_string(property);
43416 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43417 					zend_string_release(property_name);
43418 				}
43419 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43420 					ZVAL_NULL(EX_VAR(opline->result.var));
43421 				}
43422 				zval_ptr_dtor_nogc(free_op_data);
43423 				goto exit_assign_obj;
43424 			}
43425 		} while (0);
43426 	}
43427 
43428 	if (IS_CV == IS_CONST &&
43429 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
43430 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
43431 		zend_object *zobj = Z_OBJ_P(object);
43432 		zval *property_val;
43433 
43434 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
43435 			property_val = OBJ_PROP(zobj, prop_offset);
43436 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
43437 fast_assign_obj:
43438 				value = zend_assign_to_variable(property_val, value, IS_VAR);
43439 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43440 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43441 				}
43442 				goto exit_assign_obj;
43443 			}
43444 		} else {
43445 			if (EXPECTED(zobj->properties != NULL)) {
43446 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
43447 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
43448 						GC_REFCOUNT(zobj->properties)--;
43449 					}
43450 					zobj->properties = zend_array_dup(zobj->properties);
43451 				}
43452 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
43453 				if (property_val) {
43454 					goto fast_assign_obj;
43455 				}
43456 			}
43457 
43458 			if (!zobj->ce->__set) {
43459 
43460 				if (EXPECTED(zobj->properties == NULL)) {
43461 					rebuild_object_properties(zobj);
43462 				}
43463 				if (IS_VAR == IS_CONST) {
43464 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
43465 						Z_ADDREF_P(value);
43466 					}
43467 				} else if (IS_VAR != IS_TMP_VAR) {
43468 					if (Z_ISREF_P(value)) {
43469 						if (IS_VAR == IS_VAR) {
43470 							zend_reference *ref = Z_REF_P(value);
43471 							if (--GC_REFCOUNT(ref) == 0) {
43472 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
43473 								efree_size(ref, sizeof(zend_reference));
43474 								value = &tmp;
43475 							} else {
43476 								value = Z_REFVAL_P(value);
43477 								if (Z_REFCOUNTED_P(value)) {
43478 									Z_ADDREF_P(value);
43479 								}
43480 							}
43481 						} else {
43482 							value = Z_REFVAL_P(value);
43483 							if (Z_REFCOUNTED_P(value)) {
43484 								Z_ADDREF_P(value);
43485 							}
43486 						}
43487 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
43488 						Z_ADDREF_P(value);
43489 					}
43490 				}
43491 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
43492 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43493 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43494 				}
43495 				goto exit_assign_obj;
43496 			}
43497 		}
43498 	}
43499 
43500 	if (!Z_OBJ_HT_P(object)->write_property) {
43501 		zend_string *property_name = zval_get_string(property);
43502 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43503 		zend_string_release(property_name);
43504 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43505 			ZVAL_NULL(EX_VAR(opline->result.var));
43506 		}
43507 		zval_ptr_dtor_nogc(free_op_data);
43508 		goto exit_assign_obj;
43509 	}
43510 
43511 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
43512 		ZVAL_DEREF(value);
43513 	}
43514 
43515 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
43516 
43517 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43518 		ZVAL_COPY(EX_VAR(opline->result.var), value);
43519 	}
43520 	zval_ptr_dtor_nogc(free_op_data);
43521 exit_assign_obj:
43522 
43523 
43524 	/* assign_obj has two opcodes! */
43525 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43526 }
43527 
43528 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43529 {
43530 	USE_OPLINE
43531 
43532 	zval *object, *property, *value, tmp;
43533 
43534 	SAVE_OPLINE();
43535 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43536 
43537 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
43538 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
43539 	}
43540 
43541 	property = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43542 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
43543 
43544 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
43545 		do {
43546 			if (Z_ISREF_P(object)) {
43547 				object = Z_REFVAL_P(object);
43548 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
43549 					break;
43550 				}
43551 			}
43552 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
43553 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
43554 				zend_object *obj;
43555 
43556 				zval_ptr_dtor(object);
43557 				object_init(object);
43558 				Z_ADDREF_P(object);
43559 				obj = Z_OBJ_P(object);
43560 				zend_error(E_WARNING, "Creating default object from empty value");
43561 				if (GC_REFCOUNT(obj) == 1) {
43562 					/* the enclosing container was deleted, obj is unreferenced */
43563 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43564 						ZVAL_NULL(EX_VAR(opline->result.var));
43565 					}
43566 
43567 					OBJ_RELEASE(obj);
43568 					goto exit_assign_obj;
43569 				}
43570 				Z_DELREF_P(object);
43571 			} else {
43572 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
43573 					zend_string *property_name = zval_get_string(property);
43574 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43575 					zend_string_release(property_name);
43576 				}
43577 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43578 					ZVAL_NULL(EX_VAR(opline->result.var));
43579 				}
43580 
43581 				goto exit_assign_obj;
43582 			}
43583 		} while (0);
43584 	}
43585 
43586 	if (IS_CV == IS_CONST &&
43587 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
43588 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
43589 		zend_object *zobj = Z_OBJ_P(object);
43590 		zval *property_val;
43591 
43592 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
43593 			property_val = OBJ_PROP(zobj, prop_offset);
43594 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
43595 fast_assign_obj:
43596 				value = zend_assign_to_variable(property_val, value, IS_CV);
43597 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43598 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43599 				}
43600 				goto exit_assign_obj;
43601 			}
43602 		} else {
43603 			if (EXPECTED(zobj->properties != NULL)) {
43604 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
43605 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
43606 						GC_REFCOUNT(zobj->properties)--;
43607 					}
43608 					zobj->properties = zend_array_dup(zobj->properties);
43609 				}
43610 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
43611 				if (property_val) {
43612 					goto fast_assign_obj;
43613 				}
43614 			}
43615 
43616 			if (!zobj->ce->__set) {
43617 
43618 				if (EXPECTED(zobj->properties == NULL)) {
43619 					rebuild_object_properties(zobj);
43620 				}
43621 				if (IS_CV == IS_CONST) {
43622 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
43623 						Z_ADDREF_P(value);
43624 					}
43625 				} else if (IS_CV != IS_TMP_VAR) {
43626 					if (Z_ISREF_P(value)) {
43627 						if (IS_CV == IS_VAR) {
43628 							zend_reference *ref = Z_REF_P(value);
43629 							if (--GC_REFCOUNT(ref) == 0) {
43630 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
43631 								efree_size(ref, sizeof(zend_reference));
43632 								value = &tmp;
43633 							} else {
43634 								value = Z_REFVAL_P(value);
43635 								if (Z_REFCOUNTED_P(value)) {
43636 									Z_ADDREF_P(value);
43637 								}
43638 							}
43639 						} else {
43640 							value = Z_REFVAL_P(value);
43641 							if (Z_REFCOUNTED_P(value)) {
43642 								Z_ADDREF_P(value);
43643 							}
43644 						}
43645 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
43646 						Z_ADDREF_P(value);
43647 					}
43648 				}
43649 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
43650 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43651 					ZVAL_COPY(EX_VAR(opline->result.var), value);
43652 				}
43653 				goto exit_assign_obj;
43654 			}
43655 		}
43656 	}
43657 
43658 	if (!Z_OBJ_HT_P(object)->write_property) {
43659 		zend_string *property_name = zval_get_string(property);
43660 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
43661 		zend_string_release(property_name);
43662 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43663 			ZVAL_NULL(EX_VAR(opline->result.var));
43664 		}
43665 
43666 		goto exit_assign_obj;
43667 	}
43668 
43669 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
43670 		ZVAL_DEREF(value);
43671 	}
43672 
43673 	Z_OBJ_HT_P(object)->write_property(object, property, value, (IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
43674 
43675 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43676 		ZVAL_COPY(EX_VAR(opline->result.var), value);
43677 	}
43678 
43679 exit_assign_obj:
43680 
43681 
43682 	/* assign_obj has two opcodes! */
43683 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43684 }
43685 
43686 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43687 {
43688 	USE_OPLINE
43689 
43690 	zval *object_ptr;
43691 
43692 	zval *value;
43693 	zval *variable_ptr;
43694 	zval *dim;
43695 
43696 	SAVE_OPLINE();
43697 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43698 
43699 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
43700 try_assign_dim_array:
43701 		SEPARATE_ARRAY(object_ptr);
43702 		if (IS_CV == IS_UNUSED) {
43703 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
43704 			if (UNEXPECTED(variable_ptr == NULL)) {
43705 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
43706 				goto assign_dim_error;
43707 			}
43708 		} else {
43709 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
43710 			if (IS_CV == IS_CONST) {
43711 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43712 			} else {
43713 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43714 			}
43715 			if (UNEXPECTED(variable_ptr == NULL)) {
43716 				goto assign_dim_error;
43717 			}
43718 		}
43719 		value = EX_CONSTANT((opline+1)->op1);
43720 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
43721 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43722 			ZVAL_COPY(EX_VAR(opline->result.var), value);
43723 		}
43724 	} else {
43725 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
43726 			object_ptr = Z_REFVAL_P(object_ptr);
43727 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
43728 				goto try_assign_dim_array;
43729 			}
43730 		}
43731 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
43732 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43733 			value = EX_CONSTANT((opline+1)->op1);
43734 
43735 			zend_assign_to_object_dim(object_ptr, dim, value);
43736 
43737 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43738 				ZVAL_COPY(EX_VAR(opline->result.var), value);
43739 			}
43740 
43741 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
43742 			if (IS_CV == IS_UNUSED) {
43743 				zend_throw_error(NULL, "[] operator not supported for strings");
43744 
43745 
43746 				UNDEF_RESULT();
43747 				HANDLE_EXCEPTION();
43748 			} else {
43749 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43750 				value = EX_CONSTANT((opline+1)->op1);
43751 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
43752 
43753 			}
43754 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
43755 			ZVAL_NEW_ARR(object_ptr);
43756 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
43757 			goto try_assign_dim_array;
43758 		} else {
43759 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
43760 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
43761 			}
43762 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43763 assign_dim_error:
43764 
43765 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43766 				ZVAL_NULL(EX_VAR(opline->result.var));
43767 			}
43768 		}
43769 	}
43770 	if (IS_CV != IS_UNUSED) {
43771 
43772 	}
43773 
43774 	/* assign_dim has two opcodes! */
43775 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43776 }
43777 
43778 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43779 {
43780 	USE_OPLINE
43781 
43782 	zval *object_ptr;
43783 	zend_free_op free_op_data;
43784 	zval *value;
43785 	zval *variable_ptr;
43786 	zval *dim;
43787 
43788 	SAVE_OPLINE();
43789 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43790 
43791 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
43792 try_assign_dim_array:
43793 		SEPARATE_ARRAY(object_ptr);
43794 		if (IS_CV == IS_UNUSED) {
43795 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
43796 			if (UNEXPECTED(variable_ptr == NULL)) {
43797 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
43798 				goto assign_dim_error;
43799 			}
43800 		} else {
43801 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
43802 			if (IS_CV == IS_CONST) {
43803 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43804 			} else {
43805 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43806 			}
43807 			if (UNEXPECTED(variable_ptr == NULL)) {
43808 				goto assign_dim_error;
43809 			}
43810 		}
43811 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43812 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
43813 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43814 			ZVAL_COPY(EX_VAR(opline->result.var), value);
43815 		}
43816 	} else {
43817 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
43818 			object_ptr = Z_REFVAL_P(object_ptr);
43819 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
43820 				goto try_assign_dim_array;
43821 			}
43822 		}
43823 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
43824 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43825 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43826 
43827 			zend_assign_to_object_dim(object_ptr, dim, value);
43828 
43829 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43830 				ZVAL_COPY(EX_VAR(opline->result.var), value);
43831 			}
43832 
43833 			zval_ptr_dtor_nogc(free_op_data);
43834 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
43835 			if (IS_CV == IS_UNUSED) {
43836 				zend_throw_error(NULL, "[] operator not supported for strings");
43837 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
43838 
43839 				UNDEF_RESULT();
43840 				HANDLE_EXCEPTION();
43841 			} else {
43842 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43843 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43844 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
43845 				zval_ptr_dtor_nogc(free_op_data);
43846 			}
43847 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
43848 			ZVAL_NEW_ARR(object_ptr);
43849 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
43850 			goto try_assign_dim_array;
43851 		} else {
43852 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
43853 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
43854 			}
43855 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43856 assign_dim_error:
43857 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
43858 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43859 				ZVAL_NULL(EX_VAR(opline->result.var));
43860 			}
43861 		}
43862 	}
43863 	if (IS_CV != IS_UNUSED) {
43864 
43865 	}
43866 
43867 	/* assign_dim has two opcodes! */
43868 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43869 }
43870 
43871 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43872 {
43873 	USE_OPLINE
43874 
43875 	zval *object_ptr;
43876 	zend_free_op free_op_data;
43877 	zval *value;
43878 	zval *variable_ptr;
43879 	zval *dim;
43880 
43881 	SAVE_OPLINE();
43882 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43883 
43884 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
43885 try_assign_dim_array:
43886 		SEPARATE_ARRAY(object_ptr);
43887 		if (IS_CV == IS_UNUSED) {
43888 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
43889 			if (UNEXPECTED(variable_ptr == NULL)) {
43890 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
43891 				goto assign_dim_error;
43892 			}
43893 		} else {
43894 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
43895 			if (IS_CV == IS_CONST) {
43896 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43897 			} else {
43898 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43899 			}
43900 			if (UNEXPECTED(variable_ptr == NULL)) {
43901 				goto assign_dim_error;
43902 			}
43903 		}
43904 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43905 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
43906 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43907 			ZVAL_COPY(EX_VAR(opline->result.var), value);
43908 		}
43909 	} else {
43910 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
43911 			object_ptr = Z_REFVAL_P(object_ptr);
43912 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
43913 				goto try_assign_dim_array;
43914 			}
43915 		}
43916 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
43917 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43918 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43919 
43920 			zend_assign_to_object_dim(object_ptr, dim, value);
43921 
43922 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43923 				ZVAL_COPY(EX_VAR(opline->result.var), value);
43924 			}
43925 
43926 			zval_ptr_dtor_nogc(free_op_data);
43927 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
43928 			if (IS_CV == IS_UNUSED) {
43929 				zend_throw_error(NULL, "[] operator not supported for strings");
43930 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
43931 
43932 				UNDEF_RESULT();
43933 				HANDLE_EXCEPTION();
43934 			} else {
43935 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43936 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
43937 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
43938 				zval_ptr_dtor_nogc(free_op_data);
43939 			}
43940 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
43941 			ZVAL_NEW_ARR(object_ptr);
43942 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
43943 			goto try_assign_dim_array;
43944 		} else {
43945 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
43946 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
43947 			}
43948 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
43949 assign_dim_error:
43950 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
43951 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
43952 				ZVAL_NULL(EX_VAR(opline->result.var));
43953 			}
43954 		}
43955 	}
43956 	if (IS_CV != IS_UNUSED) {
43957 
43958 	}
43959 
43960 	/* assign_dim has two opcodes! */
43961 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
43962 }
43963 
43964 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
43965 {
43966 	USE_OPLINE
43967 
43968 	zval *object_ptr;
43969 
43970 	zval *value;
43971 	zval *variable_ptr;
43972 	zval *dim;
43973 
43974 	SAVE_OPLINE();
43975 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
43976 
43977 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
43978 try_assign_dim_array:
43979 		SEPARATE_ARRAY(object_ptr);
43980 		if (IS_CV == IS_UNUSED) {
43981 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
43982 			if (UNEXPECTED(variable_ptr == NULL)) {
43983 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
43984 				goto assign_dim_error;
43985 			}
43986 		} else {
43987 			dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
43988 			if (IS_CV == IS_CONST) {
43989 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43990 			} else {
43991 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
43992 			}
43993 			if (UNEXPECTED(variable_ptr == NULL)) {
43994 				goto assign_dim_error;
43995 			}
43996 		}
43997 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
43998 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
43999 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44000 			ZVAL_COPY(EX_VAR(opline->result.var), value);
44001 		}
44002 	} else {
44003 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
44004 			object_ptr = Z_REFVAL_P(object_ptr);
44005 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
44006 				goto try_assign_dim_array;
44007 			}
44008 		}
44009 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
44010 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44011 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
44012 
44013 			zend_assign_to_object_dim(object_ptr, dim, value);
44014 
44015 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44016 				ZVAL_COPY(EX_VAR(opline->result.var), value);
44017 			}
44018 
44019 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
44020 			if (IS_CV == IS_UNUSED) {
44021 				zend_throw_error(NULL, "[] operator not supported for strings");
44022 
44023 
44024 				UNDEF_RESULT();
44025 				HANDLE_EXCEPTION();
44026 			} else {
44027 				dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44028 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
44029 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
44030 
44031 			}
44032 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
44033 			ZVAL_NEW_ARR(object_ptr);
44034 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
44035 			goto try_assign_dim_array;
44036 		} else {
44037 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
44038 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
44039 			}
44040 			dim = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44041 assign_dim_error:
44042 
44043 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44044 				ZVAL_NULL(EX_VAR(opline->result.var));
44045 			}
44046 		}
44047 	}
44048 	if (IS_CV != IS_UNUSED) {
44049 
44050 	}
44051 
44052 	/* assign_dim has two opcodes! */
44053 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
44054 }
44055 
44056 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44057 {
44058 	USE_OPLINE
44059 
44060 	zval *value;
44061 	zval *variable_ptr;
44062 
44063 	SAVE_OPLINE();
44064 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44065 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
44066 
44067 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
44068 
44069 		if (UNEXPECTED(0)) {
44070 			ZVAL_NULL(EX_VAR(opline->result.var));
44071 		}
44072 	} else {
44073 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
44074 		if (UNEXPECTED(0)) {
44075 			ZVAL_COPY(EX_VAR(opline->result.var), value);
44076 		}
44077 
44078 		/* zend_assign_to_variable() always takes care of op2, never free it! */
44079 	}
44080 
44081 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44082 }
44083 
44084 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44085 {
44086 	USE_OPLINE
44087 
44088 	zval *value;
44089 	zval *variable_ptr;
44090 
44091 	SAVE_OPLINE();
44092 	value = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44093 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
44094 
44095 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) {
44096 
44097 		if (UNEXPECTED(1)) {
44098 			ZVAL_NULL(EX_VAR(opline->result.var));
44099 		}
44100 	} else {
44101 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
44102 		if (UNEXPECTED(1)) {
44103 			ZVAL_COPY(EX_VAR(opline->result.var), value);
44104 		}
44105 
44106 		/* zend_assign_to_variable() always takes care of op2, never free it! */
44107 	}
44108 
44109 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44110 }
44111 
44112 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44113 {
44114 	USE_OPLINE
44115 
44116 	zval *variable_ptr;
44117 	zval *value_ptr;
44118 
44119 	SAVE_OPLINE();
44120 	value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op2.var EXECUTE_DATA_CC);
44121 	variable_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
44122 
44123 	if (IS_CV == IS_VAR &&
44124 	    UNEXPECTED(Z_TYPE_P(EX_VAR(opline->op1.var)) != IS_INDIRECT) &&
44125 	    UNEXPECTED(!Z_ISREF_P(EX_VAR(opline->op1.var))) &&
44126 	    UNEXPECTED(!Z_ISERROR_P(EX_VAR(opline->op1.var)))) {
44127 
44128 		zend_throw_error(NULL, "Cannot assign by reference to overloaded object");
44129 
44130 
44131 		UNDEF_RESULT();
44132 		HANDLE_EXCEPTION();
44133 
44134 	} else if (IS_CV == IS_VAR &&
44135 	           opline->extended_value == ZEND_RETURNS_FUNCTION &&
44136 			   UNEXPECTED(!Z_ISREF_P(value_ptr))) {
44137 		zend_error(E_NOTICE, "Only variables should be assigned by reference");
44138 		if (UNEXPECTED(EG(exception) != NULL)) {
44139 
44140 			UNDEF_RESULT();
44141 			HANDLE_EXCEPTION();
44142 		}
44143 
44144 		value_ptr = zend_assign_to_variable(variable_ptr, value_ptr, IS_CV);
44145 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44146 			ZVAL_COPY(EX_VAR(opline->result.var), value_ptr);
44147 		}
44148 		/* zend_assign_to_variable() always takes care of op2, never free it! */
44149 
44150 	} else {
44151 
44152 		if ((IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(variable_ptr))) ||
44153 		    (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(value_ptr)))) {
44154 			variable_ptr = &EG(uninitialized_zval);
44155 		} else {
44156 			zend_assign_to_variable_reference(variable_ptr, value_ptr);
44157 		}
44158 
44159 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
44160 			ZVAL_COPY(EX_VAR(opline->result.var), variable_ptr);
44161 		}
44162 
44163 	}
44164 
44165 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44166 }
44167 
44168 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44169 {
44170 	USE_OPLINE
44171 
44172 	zval *op1, *op2;
44173 	zend_string *op1_str, *op2_str, *str;
44174 
44175 
44176 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
44177 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
44178 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
44179 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
44180 		zend_string *op1_str = Z_STR_P(op1);
44181 		zend_string *op2_str = Z_STR_P(op2);
44182 		zend_string *str;
44183 
44184 		do {
44185 			if (IS_CV != IS_CONST) {
44186 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
44187 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
44188 
44189 					break;
44190 				}
44191 			}
44192 			if (IS_CV != IS_CONST) {
44193 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
44194 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
44195 
44196 					break;
44197 				}
44198 			}
44199 			if (IS_CV != IS_CONST && IS_CV != IS_CV &&
44200 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
44201 			    size_t len = ZSTR_LEN(op1_str);
44202 
44203 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
44204 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
44205 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
44206 				break;
44207 			} else {
44208 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
44209 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
44210 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
44211 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
44212 			}
44213 
44214 		} while (0);
44215 
44216 		ZEND_VM_NEXT_OPCODE();
44217 	}
44218 
44219 	SAVE_OPLINE();
44220 	if (IS_CV == IS_CONST) {
44221 		op1_str = Z_STR_P(op1);
44222 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
44223 		op1_str = zend_string_copy(Z_STR_P(op1));
44224 	} else {
44225 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
44226 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
44227 		}
44228 		op1_str = _zval_get_string_func(op1);
44229 	}
44230 	if (IS_CV == IS_CONST) {
44231 		op2_str = Z_STR_P(op2);
44232 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
44233 		op2_str = zend_string_copy(Z_STR_P(op2));
44234 	} else {
44235 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
44236 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
44237 		}
44238 		op2_str = _zval_get_string_func(op2);
44239 	}
44240 	do {
44241 		if (IS_CV != IS_CONST) {
44242 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
44243 				if (IS_CV == IS_CONST) {
44244 					zend_string_addref(op2_str);
44245 				}
44246 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
44247 				zend_string_release(op1_str);
44248 				break;
44249 			}
44250 		}
44251 		if (IS_CV != IS_CONST) {
44252 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
44253 				if (IS_CV == IS_CONST) {
44254 					zend_string_addref(op1_str);
44255 				}
44256 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
44257 				zend_string_release(op2_str);
44258 				break;
44259 			}
44260 		}
44261 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
44262 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
44263 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
44264 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
44265 		if (IS_CV != IS_CONST) {
44266 			zend_string_release(op1_str);
44267 		}
44268 		if (IS_CV != IS_CONST) {
44269 			zend_string_release(op2_str);
44270 		}
44271 	} while (0);
44272 
44273 
44274 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44275 }
44276 
44277 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44278 {
44279 	USE_OPLINE
44280 	zval *function_name;
44281 
44282 	zval *object;
44283 	zend_function *fbc;
44284 	zend_class_entry *called_scope;
44285 	zend_object *obj;
44286 	zend_execute_data *call;
44287 	uint32_t call_info;
44288 
44289 	SAVE_OPLINE();
44290 
44291 	object = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
44292 
44293 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
44294 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44295 	}
44296 
44297 	function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
44298 
44299 	if (IS_CV != IS_CONST &&
44300 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
44301 		do {
44302 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
44303 				function_name = Z_REFVAL_P(function_name);
44304 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
44305 					break;
44306 				}
44307 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
44308 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
44309 				if (UNEXPECTED(EG(exception) != NULL)) {
44310 
44311 					HANDLE_EXCEPTION();
44312 				}
44313 			}
44314 			zend_throw_error(NULL, "Method name must be a string");
44315 
44316 
44317 			HANDLE_EXCEPTION();
44318 		} while (0);
44319 	}
44320 
44321 	if (IS_CV != IS_UNUSED) {
44322 		do {
44323 			if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
44324 				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
44325 					object = Z_REFVAL_P(object);
44326 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
44327 						break;
44328 					}
44329 				}
44330 				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
44331 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
44332 					if (UNEXPECTED(EG(exception) != NULL)) {
44333 
44334 						HANDLE_EXCEPTION();
44335 					}
44336 				}
44337 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
44338 
44339 
44340 				HANDLE_EXCEPTION();
44341 			}
44342 		} while (0);
44343 	}
44344 
44345 	obj = Z_OBJ_P(object);
44346 	called_scope = obj->ce;
44347 
44348 	if (IS_CV == IS_CONST &&
44349 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
44350 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
44351 	} else {
44352 	    zend_object *orig_obj = obj;
44353 
44354 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
44355 			zend_throw_error(NULL, "Object does not support method calls");
44356 
44357 
44358 			HANDLE_EXCEPTION();
44359 		}
44360 
44361 		/* First, locate the function. */
44362 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
44363 		if (UNEXPECTED(fbc == NULL)) {
44364 			if (EXPECTED(!EG(exception))) {
44365 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
44366 			}
44367 
44368 
44369 			HANDLE_EXCEPTION();
44370 		}
44371 		if (IS_CV == IS_CONST &&
44372 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
44373 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
44374 		    EXPECTED(obj == orig_obj)) {
44375 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
44376 		}
44377 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
44378 			init_func_run_time_cache(&fbc->op_array);
44379 		}
44380 	}
44381 
44382 	call_info = ZEND_CALL_NESTED_FUNCTION;
44383 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
44384 		obj = NULL;
44385 	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
44386 		/* CV may be changed indirectly (e.g. when it's a reference) */
44387 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
44388 		GC_REFCOUNT(obj)++; /* For $this pointer */
44389 	}
44390 
44391 
44392 	if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
44393 		HANDLE_EXCEPTION();
44394 	}
44395 
44396 	call = zend_vm_stack_push_call_frame(call_info,
44397 		fbc, opline->extended_value, called_scope, obj);
44398 	call->prev_execute_data = EX(call);
44399 	EX(call) = call;
44400 
44401 	ZEND_VM_NEXT_OPCODE();
44402 }
44403 
44404 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44405 {
44406 	USE_OPLINE
44407 
44408 	zval *op1, *op2, *result;
44409 
44410 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
44411 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
44412 	do {
44413 		int result;
44414 
44415 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
44416 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
44417 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
44418 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
44419 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
44420 			} else {
44421 				break;
44422 			}
44423 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
44424 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
44425 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
44426 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
44427 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
44428 			} else {
44429 				break;
44430 			}
44431 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
44432 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
44433 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
44434 					result = 1;
44435 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
44436 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
44437 						result = 0;
44438 					} else {
44439 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
44440 					}
44441 				} else {
44442 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
44443 				}
44444 
44445 			} else {
44446 				break;
44447 			}
44448 		} else {
44449 			break;
44450 		}
44451 		ZEND_VM_SMART_BRANCH(result, 0);
44452 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
44453 		ZEND_VM_NEXT_OPCODE();
44454 	} while (0);
44455 
44456 	SAVE_OPLINE();
44457 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
44458 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
44459 	}
44460 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
44461 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
44462 	}
44463 	result = EX_VAR(opline->result.var);
44464 	compare_function(result, op1, op2);
44465 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
44466 
44467 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44468 }
44469 
44470 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44471 {
44472 	USE_OPLINE
44473 
44474 	zval *expr_ptr, new_expr;
44475 
44476 	SAVE_OPLINE();
44477 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
44478 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
44479 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
44480 		ZVAL_MAKE_REF(expr_ptr);
44481 		Z_ADDREF_P(expr_ptr);
44482 
44483 	} else {
44484 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
44485 		if (IS_CV == IS_TMP_VAR) {
44486 			/* pass */
44487 		} else if (IS_CV == IS_CONST) {
44488 			if (Z_REFCOUNTED_P(expr_ptr)) {
44489 				Z_ADDREF_P(expr_ptr);
44490 			}
44491 		} else if (IS_CV == IS_CV) {
44492 			ZVAL_DEREF(expr_ptr);
44493 			if (Z_REFCOUNTED_P(expr_ptr)) {
44494 				Z_ADDREF_P(expr_ptr);
44495 			}
44496 		} else /* if (IS_CV == IS_VAR) */ {
44497 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
44498 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
44499 
44500 				expr_ptr = Z_REFVAL_P(expr_ptr);
44501 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
44502 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
44503 					expr_ptr = &new_expr;
44504 					efree_size(ref, sizeof(zend_reference));
44505 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
44506 					Z_ADDREF_P(expr_ptr);
44507 				}
44508 			}
44509 		}
44510 	}
44511 
44512 	if (IS_CV != IS_UNUSED) {
44513 
44514 		zval *offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
44515 		zend_string *str;
44516 		zend_ulong hval;
44517 
44518 add_again:
44519 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
44520 			str = Z_STR_P(offset);
44521 			if (IS_CV != IS_CONST) {
44522 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
44523 					goto num_index;
44524 				}
44525 			}
44526 str_index:
44527 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
44528 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
44529 			hval = Z_LVAL_P(offset);
44530 num_index:
44531 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
44532 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
44533 			offset = Z_REFVAL_P(offset);
44534 			goto add_again;
44535 		} else if (Z_TYPE_P(offset) == IS_NULL) {
44536 			str = ZSTR_EMPTY_ALLOC();
44537 			goto str_index;
44538 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
44539 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
44540 			goto num_index;
44541 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
44542 			hval = 0;
44543 			goto num_index;
44544 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
44545 			hval = 1;
44546 			goto num_index;
44547 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
44548 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
44549 			str = ZSTR_EMPTY_ALLOC();
44550 			goto str_index;
44551 		} else {
44552 			zend_error(E_WARNING, "Illegal offset type");
44553 			zval_ptr_dtor(expr_ptr);
44554 		}
44555 
44556 	} else {
44557 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
44558 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
44559 			zval_ptr_dtor(expr_ptr);
44560 		}
44561 	}
44562 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44563 }
44564 
44565 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44566 {
44567 	zval *array;
44568 	uint32_t size;
44569 	USE_OPLINE
44570 
44571 	array = EX_VAR(opline->result.var);
44572 	if (IS_CV != IS_UNUSED) {
44573 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
44574 	} else {
44575 		size = 0;
44576 	}
44577 	ZVAL_NEW_ARR(array);
44578 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
44579 
44580 	if (IS_CV != IS_UNUSED) {
44581 		/* Explicitly initialize array as not-packed if flag is set */
44582 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
44583 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
44584 		}
44585 	}
44586 
44587 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44588 }
44589 
44590 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44591 {
44592 	USE_OPLINE
44593 
44594 	zval *container;
44595 	zval *offset;
44596 	zend_ulong hval;
44597 	zend_string *key;
44598 
44599 	SAVE_OPLINE();
44600 	container = _get_zval_ptr_cv_undef_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
44601 	offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
44602 
44603 	do {
44604 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
44605 			HashTable *ht;
44606 
44607 unset_dim_array:
44608 			SEPARATE_ARRAY(container);
44609 			ht = Z_ARRVAL_P(container);
44610 offset_again:
44611 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
44612 				key = Z_STR_P(offset);
44613 				if (IS_CV != IS_CONST) {
44614 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
44615 						goto num_index_dim;
44616 					}
44617 				}
44618 str_index_dim:
44619 				if (ht == &EG(symbol_table)) {
44620 					zend_delete_global_variable(key);
44621 				} else {
44622 					zend_hash_del(ht, key);
44623 				}
44624 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
44625 				hval = Z_LVAL_P(offset);
44626 num_index_dim:
44627 				zend_hash_index_del(ht, hval);
44628 			} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
44629 				offset = Z_REFVAL_P(offset);
44630 				goto offset_again;
44631 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
44632 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
44633 				goto num_index_dim;
44634 			} else if (Z_TYPE_P(offset) == IS_NULL) {
44635 				key = ZSTR_EMPTY_ALLOC();
44636 				goto str_index_dim;
44637 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
44638 				hval = 0;
44639 				goto num_index_dim;
44640 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
44641 				hval = 1;
44642 				goto num_index_dim;
44643 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
44644 				hval = Z_RES_HANDLE_P(offset);
44645 				goto num_index_dim;
44646 			} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
44647 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
44648 				key = ZSTR_EMPTY_ALLOC();
44649 				goto str_index_dim;
44650 			} else {
44651 				zend_error(E_WARNING, "Illegal offset type in unset");
44652 			}
44653 			break;
44654 		} else if (Z_ISREF_P(container)) {
44655 			container = Z_REFVAL_P(container);
44656 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
44657 				goto unset_dim_array;
44658 			}
44659 		}
44660 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
44661 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
44662 		}
44663 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
44664 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
44665 		}
44666 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
44667 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
44668 				zend_throw_error(NULL, "Cannot use object as array");
44669 			} else {
44670 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
44671 			}
44672 		} else if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
44673 			zend_throw_error(NULL, "Cannot unset string offsets");
44674 		}
44675 	} while (0);
44676 
44677 
44678 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44679 }
44680 
44681 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44682 {
44683 	USE_OPLINE
44684 
44685 	zval *container;
44686 	zval *offset;
44687 
44688 	SAVE_OPLINE();
44689 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
44690 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
44691 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44692 	}
44693 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44694 
44695 	do {
44696 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
44697 			if (Z_ISREF_P(container)) {
44698 				container = Z_REFVAL_P(container);
44699 				if (Z_TYPE_P(container) != IS_OBJECT) {
44700 					break;
44701 				}
44702 			} else {
44703 				break;
44704 			}
44705 		}
44706 		if (Z_OBJ_HT_P(container)->unset_property) {
44707 			Z_OBJ_HT_P(container)->unset_property(container, offset, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
44708 		} else {
44709 			zend_string *property_name = zval_get_string(offset);
44710 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
44711 			zend_string_release(property_name);
44712 		}
44713 	} while (0);
44714 
44715 
44716 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44717 }
44718 
44719 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44720 {
44721 	USE_OPLINE
44722 
44723 	zval *container;
44724 	int result;
44725 	zend_ulong hval;
44726 	zval *offset;
44727 
44728 	SAVE_OPLINE();
44729 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
44730 	offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
44731 
44732 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
44733 		HashTable *ht;
44734 		zval *value;
44735 		zend_string *str;
44736 
44737 isset_dim_obj_array:
44738 		ht = Z_ARRVAL_P(container);
44739 isset_again:
44740 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
44741 			str = Z_STR_P(offset);
44742 			if (IS_CV != IS_CONST) {
44743 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
44744 					goto num_index_prop;
44745 				}
44746 			}
44747 str_index_prop:
44748 			value = zend_hash_find_ind(ht, str);
44749 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
44750 			hval = Z_LVAL_P(offset);
44751 num_index_prop:
44752 			value = zend_hash_index_find(ht, hval);
44753 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
44754 			offset = Z_REFVAL_P(offset);
44755 			goto isset_again;
44756 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
44757 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
44758 			goto num_index_prop;
44759 		} else if (Z_TYPE_P(offset) == IS_NULL) {
44760 			str = ZSTR_EMPTY_ALLOC();
44761 			goto str_index_prop;
44762 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
44763 			hval = 0;
44764 			goto num_index_prop;
44765 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
44766 			hval = 1;
44767 			goto num_index_prop;
44768 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
44769 			hval = Z_RES_HANDLE_P(offset);
44770 			goto num_index_prop;
44771 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
44772 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
44773 			str = ZSTR_EMPTY_ALLOC();
44774 			goto str_index_prop;
44775 		} else {
44776 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
44777 			goto isset_not_found;
44778 		}
44779 
44780 		if (opline->extended_value & ZEND_ISSET) {
44781 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
44782 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
44783 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
44784 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
44785 			result = (value == NULL || !i_zend_is_true(value));
44786 		}
44787 		goto isset_dim_obj_exit;
44788 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
44789 		container = Z_REFVAL_P(container);
44790 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
44791 			goto isset_dim_obj_array;
44792 		}
44793 	}
44794 
44795 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
44796 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
44797 	}
44798 
44799 	if ((IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
44800 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
44801 			result =
44802 				((opline->extended_value & ZEND_ISSET) == 0) ^
44803 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
44804 		} else {
44805 			zend_error(E_NOTICE, "Trying to check element of non-array");
44806 			goto isset_not_found;
44807 		}
44808 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
44809 		zend_long lval;
44810 
44811 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
44812 			lval = Z_LVAL_P(offset);
44813 isset_str_offset:
44814 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
44815 				lval += (zend_long)Z_STRLEN_P(container);
44816 			}
44817 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
44818 				if (opline->extended_value & ZEND_ISSET) {
44819 					result = 1;
44820 				} else {
44821 					result = (Z_STRVAL_P(container)[lval] == '0');
44822 				}
44823 			} else {
44824 				goto isset_not_found;
44825 			}
44826 		} else {
44827 			if (IS_CV & (IS_CV|IS_VAR)) {
44828 				ZVAL_DEREF(offset);
44829 			}
44830 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
44831 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
44832 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
44833 				lval = zval_get_long(offset);
44834 				goto isset_str_offset;
44835 			}
44836 			goto isset_not_found;
44837 		}
44838 	} else {
44839 isset_not_found:
44840 		result = ((opline->extended_value & ZEND_ISSET) == 0);
44841 	}
44842 
44843 isset_dim_obj_exit:
44844 
44845 
44846 	ZEND_VM_SMART_BRANCH(result, 1);
44847 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
44848 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44849 }
44850 
44851 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44852 {
44853 	USE_OPLINE
44854 
44855 	zval *container;
44856 	int result;
44857 	zval *offset;
44858 
44859 	SAVE_OPLINE();
44860 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
44861 
44862 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
44863 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
44864 	}
44865 
44866 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44867 
44868 	if (IS_CV == IS_CONST ||
44869 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
44870 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
44871 			container = Z_REFVAL_P(container);
44872 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
44873 				goto isset_no_object;
44874 			}
44875 		} else {
44876 			goto isset_no_object;
44877 		}
44878 	}
44879 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
44880 		zend_string *property_name = zval_get_string(offset);
44881 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
44882 		zend_string_release(property_name);
44883 isset_no_object:
44884 		result = ((opline->extended_value & ZEND_ISSET) == 0);
44885 	} else {
44886 		result =
44887 			((opline->extended_value & ZEND_ISSET) == 0) ^
44888 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
44889 	}
44890 
44891 
44892 	ZEND_VM_SMART_BRANCH(result, 1);
44893 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
44894 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
44895 }
44896 
44897 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_YIELD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
44898 {
44899 	USE_OPLINE
44900 
44901 	zend_generator *generator = zend_get_running_generator(EXECUTE_DATA_C);
44902 
44903 	SAVE_OPLINE();
44904 	if (UNEXPECTED(generator->flags & ZEND_GENERATOR_FORCED_CLOSE)) {
44905 		zend_throw_error(NULL, "Cannot yield from finally in a force-closed generator");
44906 
44907 
44908 		UNDEF_RESULT();
44909 		HANDLE_EXCEPTION();
44910 	}
44911 
44912 	/* Destroy the previously yielded value */
44913 	zval_ptr_dtor(&generator->value);
44914 
44915 	/* Destroy the previously yielded key */
44916 	zval_ptr_dtor(&generator->key);
44917 
44918 	/* Set the new yielded value */
44919 	if (IS_CV != IS_UNUSED) {
44920 
44921 
44922 		if (UNEXPECTED(EX(func)->op_array.fn_flags & ZEND_ACC_RETURN_REFERENCE)) {
44923 			/* Constants and temporary variables aren't yieldable by reference,
44924 			 * but we still allow them with a notice. */
44925 			if (IS_CV & (IS_CONST|IS_TMP_VAR)) {
44926 				zval *value;
44927 
44928 				zend_error(E_NOTICE, "Only variable references should be yielded by reference");
44929 
44930 				value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
44931 				ZVAL_COPY_VALUE(&generator->value, value);
44932 				if (IS_CV == IS_CONST) {
44933 					if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
44934 						Z_ADDREF(generator->value);
44935 					}
44936 				}
44937 			} else {
44938 				zval *value_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
44939 
44940 				/* If a function call result is yielded and the function did
44941 				 * not return by reference we throw a notice. */
44942 				if (IS_CV == IS_VAR &&
44943 				    (value_ptr == &EG(uninitialized_zval) ||
44944 				     (opline->extended_value == ZEND_RETURNS_FUNCTION &&
44945 				      !Z_ISREF_P(value_ptr)))) {
44946 					zend_error(E_NOTICE, "Only variable references should be yielded by reference");
44947 				} else {
44948 					ZVAL_MAKE_REF(value_ptr);
44949 				}
44950 				ZVAL_COPY(&generator->value, value_ptr);
44951 
44952 			}
44953 		} else {
44954 			zval *value = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
44955 
44956 			/* Consts, temporary variables and references need copying */
44957 			if (IS_CV == IS_CONST) {
44958 				ZVAL_COPY_VALUE(&generator->value, value);
44959 				if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->value))) {
44960 					Z_ADDREF(generator->value);
44961 				}
44962 			} else if (IS_CV == IS_TMP_VAR) {
44963 				ZVAL_COPY_VALUE(&generator->value, value);
44964             } else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(value)) {
44965 				ZVAL_COPY(&generator->value, Z_REFVAL_P(value));
44966 
44967 			} else {
44968 				ZVAL_COPY_VALUE(&generator->value, value);
44969 				if (IS_CV == IS_CV) {
44970 					if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
44971 				}
44972 			}
44973 		}
44974 	} else {
44975 		/* If no value was specified yield null */
44976 		ZVAL_NULL(&generator->value);
44977 	}
44978 
44979 	/* Set the new yielded key */
44980 	if (IS_CV != IS_UNUSED) {
44981 
44982 		zval *key = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
44983 
44984 		/* Consts, temporary variables and references need copying */
44985 		if (IS_CV == IS_CONST) {
44986 			ZVAL_COPY_VALUE(&generator->key, key);
44987 			if (UNEXPECTED(Z_OPT_REFCOUNTED(generator->key))) {
44988 				Z_ADDREF(generator->key);
44989 			}
44990 		} else if (IS_CV == IS_TMP_VAR) {
44991 			ZVAL_COPY_VALUE(&generator->key, key);
44992 		} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(key)) {
44993 			ZVAL_COPY(&generator->key, Z_REFVAL_P(key));
44994 
44995 		} else {
44996 			ZVAL_COPY_VALUE(&generator->key, key);
44997 			if (IS_CV == IS_CV) {
44998 				if (Z_OPT_REFCOUNTED_P(key)) Z_ADDREF_P(key);
44999 			}
45000 		}
45001 
45002 		if (Z_TYPE(generator->key) == IS_LONG
45003 		    && Z_LVAL(generator->key) > generator->largest_used_integer_key
45004 		) {
45005 			generator->largest_used_integer_key = Z_LVAL(generator->key);
45006 		}
45007 	} else {
45008 		/* If no key was specified we use auto-increment keys */
45009 		generator->largest_used_integer_key++;
45010 		ZVAL_LONG(&generator->key, generator->largest_used_integer_key);
45011 	}
45012 
45013 	if (RETURN_VALUE_USED(opline)) {
45014 		/* If the return value of yield is used set the send
45015 		 * target and initialize it to NULL */
45016 		generator->send_target = EX_VAR(opline->result.var);
45017 		ZVAL_NULL(generator->send_target);
45018 	} else {
45019 		generator->send_target = NULL;
45020 	}
45021 
45022 	/* We increment to the next op, so we are at the correct position when the
45023 	 * generator is resumed. */
45024 	ZEND_VM_INC_OPCODE();
45025 
45026 	/* The GOTO VM uses a local opline variable. We need to set the opline
45027 	 * variable in execute_data so we don't resume at an old position. */
45028 	SAVE_OPLINE();
45029 
45030 	ZEND_VM_RETURN();
45031 }
45032 
45033 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45034 {
45035 	USE_OPLINE
45036 
45037 	zval *container, *dim, *value;
45038 	zend_long offset;
45039 
45040 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45041 	dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
45042 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45043 fetch_dim_r_index_array:
45044 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
45045 			offset = Z_LVAL_P(dim);
45046 		} else {
45047 			offset = zval_get_long(dim);
45048 		}
45049 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
45050 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
45051 		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
45052 			SAVE_OPLINE();
45053 
45054 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45055 		} else {
45056 			ZEND_VM_NEXT_OPCODE();
45057 		}
45058 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
45059 		container = Z_REFVAL_P(container);
45060 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45061 			goto fetch_dim_r_index_array;
45062 		} else {
45063 			goto fetch_dim_r_index_slow;
45064 		}
45065 	} else {
45066 fetch_dim_r_index_slow:
45067 		SAVE_OPLINE();
45068 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
45069 
45070 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45071 	}
45072 
45073 fetch_dim_r_index_undef:
45074 	ZVAL_NULL(EX_VAR(opline->result.var));
45075 	SAVE_OPLINE();
45076 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
45077 
45078 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45079 }
45080 
45081 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45082 {
45083 	USE_OPLINE
45084 	zend_free_op free_op2;
45085 	zval *op1, *op2, *result;
45086 
45087 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45088 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45089 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
45090 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45091 			result = EX_VAR(opline->result.var);
45092 			fast_long_add_function(result, op1, op2);
45093 			ZEND_VM_NEXT_OPCODE();
45094 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45095 			result = EX_VAR(opline->result.var);
45096 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
45097 			ZEND_VM_NEXT_OPCODE();
45098 		}
45099 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
45100 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45101 			result = EX_VAR(opline->result.var);
45102 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
45103 			ZEND_VM_NEXT_OPCODE();
45104 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45105 			result = EX_VAR(opline->result.var);
45106 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
45107 			ZEND_VM_NEXT_OPCODE();
45108 		}
45109 	}
45110 
45111 	SAVE_OPLINE();
45112 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45113 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45114 	}
45115 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45116 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45117 	}
45118 	add_function(EX_VAR(opline->result.var), op1, op2);
45119 
45120 	zval_ptr_dtor_nogc(free_op2);
45121 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45122 }
45123 
45124 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45125 {
45126 	USE_OPLINE
45127 	zend_free_op free_op2;
45128 	zval *op1, *op2, *result;
45129 
45130 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45131 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45132 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
45133 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45134 			result = EX_VAR(opline->result.var);
45135 			fast_long_sub_function(result, op1, op2);
45136 			ZEND_VM_NEXT_OPCODE();
45137 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45138 			result = EX_VAR(opline->result.var);
45139 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
45140 			ZEND_VM_NEXT_OPCODE();
45141 		}
45142 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
45143 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45144 			result = EX_VAR(opline->result.var);
45145 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
45146 			ZEND_VM_NEXT_OPCODE();
45147 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45148 			result = EX_VAR(opline->result.var);
45149 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
45150 			ZEND_VM_NEXT_OPCODE();
45151 		}
45152 	}
45153 
45154 	SAVE_OPLINE();
45155 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45156 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45157 	}
45158 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45159 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45160 	}
45161 	sub_function(EX_VAR(opline->result.var), op1, op2);
45162 
45163 	zval_ptr_dtor_nogc(free_op2);
45164 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45165 }
45166 
45167 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45168 {
45169 	USE_OPLINE
45170 	zend_free_op free_op2;
45171 	zval *op1, *op2, *result;
45172 
45173 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45174 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45175 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
45176 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45177 			zend_long overflow;
45178 
45179 			result = EX_VAR(opline->result.var);
45180 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
45181 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
45182 			ZEND_VM_NEXT_OPCODE();
45183 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45184 			result = EX_VAR(opline->result.var);
45185 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
45186 			ZEND_VM_NEXT_OPCODE();
45187 		}
45188 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
45189 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45190 			result = EX_VAR(opline->result.var);
45191 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
45192 			ZEND_VM_NEXT_OPCODE();
45193 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45194 			result = EX_VAR(opline->result.var);
45195 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
45196 			ZEND_VM_NEXT_OPCODE();
45197 		}
45198 	}
45199 
45200 	SAVE_OPLINE();
45201 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45202 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45203 	}
45204 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45205 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45206 	}
45207 	mul_function(EX_VAR(opline->result.var), op1, op2);
45208 
45209 	zval_ptr_dtor_nogc(free_op2);
45210 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45211 }
45212 
45213 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45214 {
45215 	USE_OPLINE
45216 	zend_free_op free_op2;
45217 	zval *op1, *op2;
45218 
45219 	SAVE_OPLINE();
45220 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45221 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45222 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
45223 
45224 	zval_ptr_dtor_nogc(free_op2);
45225 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45226 }
45227 
45228 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45229 {
45230 	USE_OPLINE
45231 	zend_free_op free_op2;
45232 	zval *op1, *op2, *result;
45233 
45234 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45235 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45236 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
45237 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45238 			result = EX_VAR(opline->result.var);
45239 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
45240 				SAVE_OPLINE();
45241 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
45242 				ZVAL_UNDEF(EX_VAR(opline->result.var));
45243 				HANDLE_EXCEPTION();
45244 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
45245 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
45246 				ZVAL_LONG(result, 0);
45247 			} else {
45248 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
45249 			}
45250 			ZEND_VM_NEXT_OPCODE();
45251 		}
45252 	}
45253 
45254 	SAVE_OPLINE();
45255 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45256 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45257 	}
45258 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45259 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45260 	}
45261 	mod_function(EX_VAR(opline->result.var), op1, op2);
45262 
45263 	zval_ptr_dtor_nogc(free_op2);
45264 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45265 }
45266 
45267 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45268 {
45269 	USE_OPLINE
45270 	zend_free_op free_op2;
45271 	zval *op1, *op2;
45272 
45273 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45274 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45275 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
45276 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
45277 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
45278 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
45279 		ZEND_VM_NEXT_OPCODE();
45280 	}
45281 
45282 	SAVE_OPLINE();
45283 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45284 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45285 	}
45286 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45287 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45288 	}
45289 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
45290 
45291 	zval_ptr_dtor_nogc(free_op2);
45292 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45293 }
45294 
45295 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45296 {
45297 	USE_OPLINE
45298 	zend_free_op free_op2;
45299 	zval *op1, *op2;
45300 
45301 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45302 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45303 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
45304 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
45305 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
45306 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
45307 		ZEND_VM_NEXT_OPCODE();
45308 	}
45309 
45310 	SAVE_OPLINE();
45311 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45312 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45313 	}
45314 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45315 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45316 	}
45317 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
45318 
45319 	zval_ptr_dtor_nogc(free_op2);
45320 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45321 }
45322 
45323 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45324 {
45325 	USE_OPLINE
45326 	zend_free_op free_op2;
45327 	zval *op1, *op2;
45328 
45329 	SAVE_OPLINE();
45330 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45331 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45332 	pow_function(EX_VAR(opline->result.var), op1, op2);
45333 
45334 	zval_ptr_dtor_nogc(free_op2);
45335 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45336 }
45337 
45338 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45339 {
45340 	USE_OPLINE
45341 	zend_free_op free_op2;
45342 	zval *op1, *op2;
45343 
45344 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45345 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45346 
45347 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
45348 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
45349 		zend_string *op1_str = Z_STR_P(op1);
45350 		zend_string *op2_str = Z_STR_P(op2);
45351 		zend_string *str;
45352 
45353 		do {
45354 			if (IS_CV != IS_CONST) {
45355 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
45356 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
45357 
45358 					break;
45359 				}
45360 			}
45361 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
45362 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
45363 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
45364 
45365 					break;
45366 				}
45367 			}
45368 			if (IS_CV != IS_CONST && IS_CV != IS_CV &&
45369 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
45370 			    size_t len = ZSTR_LEN(op1_str);
45371 
45372 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
45373 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
45374 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
45375 				break;
45376 			} else {
45377 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
45378 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
45379 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
45380 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
45381 			}
45382 
45383 		} while (0);
45384 		zval_ptr_dtor_nogc(free_op2);
45385 		ZEND_VM_NEXT_OPCODE();
45386 	} else {
45387 		SAVE_OPLINE();
45388 
45389 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
45390 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45391 		}
45392 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
45393 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45394 		}
45395 		concat_function(EX_VAR(opline->result.var), op1, op2);
45396 
45397 		zval_ptr_dtor_nogc(free_op2);
45398 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45399 	}
45400 }
45401 
45402 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45403 {
45404 	USE_OPLINE
45405 	zend_free_op free_op2;
45406 	zval *op1, *op2, *result;
45407 
45408 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45409 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45410 	do {
45411 		int result;
45412 
45413 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
45414 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
45415 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
45416 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
45417 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
45418 			} else {
45419 				break;
45420 			}
45421 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
45422 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
45423 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
45424 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
45425 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
45426 			} else {
45427 				break;
45428 			}
45429 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
45430 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
45431 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
45432 					result = 1;
45433 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
45434 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
45435 						result = 0;
45436 					} else {
45437 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
45438 					}
45439 				} else {
45440 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
45441 				}
45442 
45443 				zval_ptr_dtor_nogc(free_op2);
45444 			} else {
45445 				break;
45446 			}
45447 		} else {
45448 			break;
45449 		}
45450 		ZEND_VM_SMART_BRANCH(result, 0);
45451 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
45452 		ZEND_VM_NEXT_OPCODE();
45453 	} while (0);
45454 
45455 	SAVE_OPLINE();
45456 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
45457 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45458 	}
45459 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
45460 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45461 	}
45462 	result = EX_VAR(opline->result.var);
45463 	compare_function(result, op1, op2);
45464 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
45465 
45466 	zval_ptr_dtor_nogc(free_op2);
45467 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45468 }
45469 
45470 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45471 {
45472 	USE_OPLINE
45473 	zend_free_op free_op2;
45474 	zval *op1, *op2, *result;
45475 
45476 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45477 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45478 	do {
45479 		int result;
45480 
45481 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
45482 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
45483 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
45484 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
45485 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
45486 			} else {
45487 				break;
45488 			}
45489 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
45490 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
45491 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
45492 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
45493 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
45494 			} else {
45495 				break;
45496 			}
45497 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
45498 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
45499 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
45500 					result = 0;
45501 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
45502 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
45503 						result = 1;
45504 					} else {
45505 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
45506 					}
45507 				} else {
45508 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
45509 				}
45510 
45511 				zval_ptr_dtor_nogc(free_op2);
45512 			} else {
45513 				break;
45514 			}
45515 		} else {
45516 			break;
45517 		}
45518 		ZEND_VM_SMART_BRANCH(result, 0);
45519 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
45520 		ZEND_VM_NEXT_OPCODE();
45521 	} while (0);
45522 
45523 	SAVE_OPLINE();
45524 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
45525 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45526 	}
45527 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
45528 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45529 	}
45530 	result = EX_VAR(opline->result.var);
45531 	compare_function(result, op1, op2);
45532 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
45533 
45534 	zval_ptr_dtor_nogc(free_op2);
45535 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45536 }
45537 
45538 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45539 {
45540 	USE_OPLINE
45541 	zend_free_op free_op2;
45542 	zval *op1, *op2, *result;
45543 
45544 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45545 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45546 	do {
45547 		int result;
45548 
45549 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
45550 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45551 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
45552 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45553 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
45554 			} else {
45555 				break;
45556 			}
45557 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
45558 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45559 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
45560 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45561 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
45562 			} else {
45563 				break;
45564 			}
45565 		} else {
45566 			break;
45567 		}
45568 		ZEND_VM_SMART_BRANCH(result, 0);
45569 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
45570 		ZEND_VM_NEXT_OPCODE();
45571 	} while (0);
45572 
45573 	SAVE_OPLINE();
45574 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45575 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45576 	}
45577 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45578 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45579 	}
45580 	result = EX_VAR(opline->result.var);
45581 	compare_function(result, op1, op2);
45582 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
45583 
45584 	zval_ptr_dtor_nogc(free_op2);
45585 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45586 }
45587 
45588 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45589 {
45590 	USE_OPLINE
45591 	zend_free_op free_op2;
45592 	zval *op1, *op2, *result;
45593 
45594 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45595 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45596 	do {
45597 		int result;
45598 
45599 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
45600 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45601 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
45602 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45603 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
45604 			} else {
45605 				break;
45606 			}
45607 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
45608 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
45609 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
45610 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45611 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
45612 			} else {
45613 				break;
45614 			}
45615 		} else {
45616 			break;
45617 		}
45618 		ZEND_VM_SMART_BRANCH(result, 0);
45619 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
45620 		ZEND_VM_NEXT_OPCODE();
45621 	} while (0);
45622 
45623 	SAVE_OPLINE();
45624 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45625 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45626 	}
45627 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45628 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45629 	}
45630 	result = EX_VAR(opline->result.var);
45631 	compare_function(result, op1, op2);
45632 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
45633 
45634 	zval_ptr_dtor_nogc(free_op2);
45635 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45636 }
45637 
45638 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45639 {
45640 	USE_OPLINE
45641 	zend_free_op free_op2;
45642 	zval *op1, *op2;
45643 
45644 	SAVE_OPLINE();
45645 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45646 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45647 	compare_function(EX_VAR(opline->result.var), op1, op2);
45648 
45649 	zval_ptr_dtor_nogc(free_op2);
45650 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45651 }
45652 
45653 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45654 {
45655 	USE_OPLINE
45656 	zend_free_op free_op2;
45657 	zval *op1, *op2;
45658 
45659 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45660 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45661 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
45662 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45663 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
45664 		ZEND_VM_NEXT_OPCODE();
45665 	}
45666 
45667 	SAVE_OPLINE();
45668 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45669 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45670 	}
45671 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45672 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45673 	}
45674 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
45675 
45676 	zval_ptr_dtor_nogc(free_op2);
45677 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45678 }
45679 
45680 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45681 {
45682 	USE_OPLINE
45683 	zend_free_op free_op2;
45684 	zval *op1, *op2;
45685 
45686 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45687 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45688 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
45689 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45690 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
45691 		ZEND_VM_NEXT_OPCODE();
45692 	}
45693 
45694 	SAVE_OPLINE();
45695 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45696 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45697 	}
45698 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45699 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45700 	}
45701 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
45702 
45703 	zval_ptr_dtor_nogc(free_op2);
45704 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45705 }
45706 
45707 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45708 {
45709 	USE_OPLINE
45710 	zend_free_op free_op2;
45711 	zval *op1, *op2;
45712 
45713 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
45714 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45715 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
45716 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
45717 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
45718 		ZEND_VM_NEXT_OPCODE();
45719 	}
45720 
45721 	SAVE_OPLINE();
45722 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
45723 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
45724 	}
45725 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
45726 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
45727 	}
45728 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
45729 
45730 	zval_ptr_dtor_nogc(free_op2);
45731 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45732 }
45733 
45734 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45735 {
45736 	USE_OPLINE
45737 	zend_free_op free_op2;
45738 	zval *op1, *op2;
45739 
45740 	SAVE_OPLINE();
45741 	op1 = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
45742 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45743 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
45744 
45745 	zval_ptr_dtor_nogc(free_op2);
45746 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45747 }
45748 
45749 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
45750 {
45751 	USE_OPLINE
45752 	zend_free_op free_op2, free_op_data1;
45753 	zval *object;
45754 	zval *property;
45755 	zval *value;
45756 	zval *zptr;
45757 
45758 	SAVE_OPLINE();
45759 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
45760 
45761 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
45762 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
45763 	}
45764 
45765 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45766 
45767 	do {
45768 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
45769 
45770 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
45771 			ZVAL_DEREF(object);
45772 			if (UNEXPECTED(!make_real_object(object))) {
45773 				zend_string *property_name = zval_get_string(property);
45774 				zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
45775 				zend_string_release(property_name);
45776 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45777 					ZVAL_NULL(EX_VAR(opline->result.var));
45778 				}
45779 				break;
45780 			}
45781 		}
45782 
45783 		/* here we are sure we are dealing with an object */
45784 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
45785 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
45786 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
45787 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45788 					ZVAL_NULL(EX_VAR(opline->result.var));
45789 				}
45790 			} else {
45791 				ZVAL_DEREF(zptr);
45792 				SEPARATE_ZVAL_NOREF(zptr);
45793 
45794 				binary_op(zptr, zptr, value);
45795 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45796 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
45797 				}
45798 			}
45799 		} else {
45800 			zend_assign_op_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), value, binary_op, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
45801 		}
45802 	} while (0);
45803 
45804 	FREE_OP(free_op_data1);
45805 	zval_ptr_dtor_nogc(free_op2);
45806 
45807 	/* assign_obj has two opcodes! */
45808 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
45809 }
45810 
45811 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
45812 {
45813 	USE_OPLINE
45814 	zend_free_op free_op2, free_op_data1;
45815 	zval *var_ptr;
45816 	zval *value, *container, *dim;
45817 
45818 	SAVE_OPLINE();
45819 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
45820 
45821 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45822 assign_dim_op_array:
45823 		SEPARATE_ARRAY(container);
45824 assign_dim_op_new_array:
45825 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
45826 			var_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(container), &EG(uninitialized_zval));
45827 			if (UNEXPECTED(!var_ptr)) {
45828 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
45829 				goto assign_dim_op_ret_null;
45830 			}
45831 		} else {
45832 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45833 
45834 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
45835 				var_ptr = zend_fetch_dimension_address_inner_RW_CONST(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
45836 			} else {
45837 				var_ptr = zend_fetch_dimension_address_inner_RW(Z_ARRVAL_P(container), dim EXECUTE_DATA_CC);
45838 			}
45839 			if (UNEXPECTED(!var_ptr)) {
45840 				goto assign_dim_op_ret_null;
45841 			}
45842 			ZVAL_DEREF(var_ptr);
45843 			SEPARATE_ZVAL_NOREF(var_ptr);
45844 		}
45845 
45846 		value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
45847 
45848 		binary_op(var_ptr, var_ptr, value);
45849 
45850 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45851 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
45852 		}
45853 	} else {
45854 		if (EXPECTED(Z_ISREF_P(container))) {
45855 			container = Z_REFVAL_P(container);
45856 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
45857 				goto assign_dim_op_array;
45858 			}
45859 		} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(container) == IS_UNDEF)) {
45860 			container = GET_OP1_UNDEF_CV(container, BP_VAR_RW);
45861 assign_dim_op_convert_to_array:
45862 			ZVAL_NEW_ARR(container);
45863 			zend_hash_init(Z_ARRVAL_P(container), 8, NULL, ZVAL_PTR_DTOR, 0);
45864 			goto assign_dim_op_new_array;
45865 		}
45866 
45867 		dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45868 
45869 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
45870 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
45871 			zend_binary_assign_op_obj_dim(container, dim, value, UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL, binary_op EXECUTE_DATA_CC);
45872 		} else {
45873 			if (UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
45874 				if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
45875 					zend_throw_error(NULL, "[] operator not supported for strings");
45876 				} else {
45877 					zend_check_string_offset(dim, BP_VAR_RW EXECUTE_DATA_CC);
45878 					if (EXPECTED(EG(exception) == NULL)) {
45879 						zend_wrong_string_offset(EXECUTE_DATA_C);
45880 					}
45881 				}
45882 				UNDEF_RESULT();
45883 			} else if (EXPECTED(Z_TYPE_P(container) <= IS_FALSE)) {
45884 				goto assign_dim_op_convert_to_array;
45885 			} else {
45886 				if (UNEXPECTED(IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(container)))) {
45887 					zend_error(E_WARNING, "Cannot use a scalar value as an array");
45888 				}
45889 assign_dim_op_ret_null:
45890 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45891 					ZVAL_NULL(EX_VAR(opline->result.var));
45892 				}
45893 			}
45894 			value = get_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
45895 		}
45896 	}
45897 
45898 	zval_ptr_dtor_nogc(free_op2);
45899 	FREE_OP(free_op_data1);
45900 
45901 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
45902 }
45903 
45904 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
45905 {
45906 	USE_OPLINE
45907 	zend_free_op free_op2;
45908 	zval *var_ptr;
45909 	zval *value;
45910 
45911 	SAVE_OPLINE();
45912 	value = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
45913 	var_ptr = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
45914 
45915 	if (IS_CV == IS_VAR && UNEXPECTED(Z_ISERROR_P(var_ptr))) {
45916 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45917 			ZVAL_NULL(EX_VAR(opline->result.var));
45918 		}
45919 	} else {
45920 		ZVAL_DEREF(var_ptr);
45921 		SEPARATE_ZVAL_NOREF(var_ptr);
45922 
45923 		binary_op(var_ptr, var_ptr, value);
45924 
45925 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
45926 			ZVAL_COPY(EX_VAR(opline->result.var), var_ptr);
45927 		}
45928 	}
45929 
45930 	zval_ptr_dtor_nogc(free_op2);
45931 
45932 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
45933 }
45934 
45935 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
45936 {
45937 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
45938 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45939 #else
45940 # if 0 || IS_CV != IS_UNUSED
45941 	USE_OPLINE
45942 
45943 	if (EXPECTED(1)) {
45944 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45945 	}
45946 	if (EXPECTED(0)) {
45947 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45948 	}
45949 # endif
45950 
45951 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45952 #endif
45953 }
45954 
45955 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
45956 {
45957 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
45958 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45959 #else
45960 # if 0 || IS_CV != IS_UNUSED
45961 	USE_OPLINE
45962 
45963 	if (EXPECTED(0)) {
45964 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45965 	}
45966 	if (EXPECTED(1)) {
45967 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45968 	}
45969 # endif
45970 
45971 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45972 #endif
45973 }
45974 
45975 static zend_always_inline ZEND_OPCODE_HANDLER_RET zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(binary_op_type binary_op ZEND_OPCODE_HANDLER_ARGS_DC)
45976 {
45977 #if 1 && (IS_TMP_VAR|IS_VAR) == IS_UNUSED
45978 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45979 #else
45980 # if 0 || IS_CV != IS_UNUSED
45981 	USE_OPLINE
45982 
45983 	if (EXPECTED(0)) {
45984 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_simple_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45985 	}
45986 	if (EXPECTED(0)) {
45987 		ZEND_VM_TAIL_CALL(zend_binary_assign_op_dim_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45988 	}
45989 # endif
45990 
45991 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_obj_helper_SPEC_CV_TMPVAR(binary_op ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45992 #endif
45993 }
45994 
45995 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
45996 {
45997 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
45998 }
45999 
46000 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46001 {
46002 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46003 }
46004 
46005 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46006 {
46007 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(add_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46008 }
46009 
46010 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46011 {
46012 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46013 }
46014 
46015 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46016 {
46017 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46018 }
46019 
46020 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46021 {
46022 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(sub_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46023 }
46024 
46025 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46026 {
46027 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46028 }
46029 
46030 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46031 {
46032 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46033 }
46034 
46035 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46036 {
46037 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(mul_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46038 }
46039 
46040 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46041 {
46042 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46043 }
46044 
46045 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46046 {
46047 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46048 }
46049 
46050 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46051 {
46052 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(div_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46053 }
46054 
46055 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46056 {
46057 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46058 }
46059 
46060 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46061 {
46062 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46063 }
46064 
46065 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46066 {
46067 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(mod_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46068 }
46069 
46070 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46071 {
46072 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46073 }
46074 
46075 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46076 {
46077 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46078 }
46079 
46080 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46081 {
46082 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(shift_left_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46083 }
46084 
46085 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46086 {
46087 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46088 }
46089 
46090 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46091 {
46092 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46093 }
46094 
46095 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46096 {
46097 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(shift_right_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46098 }
46099 
46100 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46101 {
46102 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46103 }
46104 
46105 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46106 {
46107 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46108 }
46109 
46110 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46111 {
46112 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(concat_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46113 }
46114 
46115 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46116 {
46117 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46118 }
46119 
46120 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46121 {
46122 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46123 }
46124 
46125 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46126 {
46127 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_or_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46128 }
46129 
46130 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46131 {
46132 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46133 }
46134 
46135 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46136 {
46137 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46138 }
46139 
46140 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46141 {
46142 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_and_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46143 }
46144 
46145 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46146 {
46147 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46148 }
46149 
46150 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46151 {
46152 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46153 }
46154 
46155 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46156 {
46157 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(bitwise_xor_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46158 }
46159 
46160 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46161 {
46162 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46163 }
46164 
46165 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46166 {
46167 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_DIM(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46168 }
46169 
46170 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46171 {
46172 	ZEND_VM_TAIL_CALL(zend_binary_assign_op_helper_SPEC_CV_TMPVAR_OBJ(pow_function ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46173 }
46174 
46175 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
46176 {
46177 	USE_OPLINE
46178 	zend_free_op free_op2;
46179 	zval *object;
46180 	zval *property;
46181 	zval *zptr;
46182 
46183 	SAVE_OPLINE();
46184 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
46185 
46186 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
46187 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46188 	}
46189 
46190 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46191 
46192 	do {
46193 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
46194 			ZVAL_DEREF(object);
46195 			if (UNEXPECTED(!make_real_object(object))) {
46196 				zend_string *property_name = zval_get_string(property);
46197 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
46198 				zend_string_release(property_name);
46199 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46200 					ZVAL_NULL(EX_VAR(opline->result.var));
46201 				}
46202 				break;
46203 			}
46204 		}
46205 
46206 		/* here we are sure we are dealing with an object */
46207 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
46208 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
46209 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
46210 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46211 					ZVAL_NULL(EX_VAR(opline->result.var));
46212 				}
46213 			} else {
46214 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
46215 					if (inc) {
46216 						fast_long_increment_function(zptr);
46217 					} else {
46218 						fast_long_decrement_function(zptr);
46219 					}
46220 				} else {
46221 					ZVAL_DEREF(zptr);
46222 					SEPARATE_ZVAL_NOREF(zptr);
46223 
46224 					if (inc) {
46225 						increment_function(zptr);
46226 					} else {
46227 						decrement_function(zptr);
46228 					}
46229 				}
46230 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46231 					ZVAL_COPY(EX_VAR(opline->result.var), zptr);
46232 				}
46233 			}
46234 		} else {
46235 			zend_pre_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL));
46236 		}
46237 	} while (0);
46238 
46239 	zval_ptr_dtor_nogc(free_op2);
46240 
46241 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46242 }
46243 
46244 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46245 {
46246 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46247 }
46248 
46249 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46250 {
46251 	ZEND_VM_TAIL_CALL(zend_pre_incdec_property_helper_SPEC_CV_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46252 }
46253 
46254 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_post_incdec_property_helper_SPEC_CV_TMPVAR(int inc ZEND_OPCODE_HANDLER_ARGS_DC)
46255 {
46256 	USE_OPLINE
46257 	zend_free_op free_op2;
46258 	zval *object;
46259 	zval *property;
46260 	zval *zptr;
46261 
46262 	SAVE_OPLINE();
46263 	object = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
46264 
46265 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
46266 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46267 	}
46268 
46269 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46270 
46271 	do {
46272 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
46273 			ZVAL_DEREF(object);
46274 			if (UNEXPECTED(!make_real_object(object))) {
46275 				zend_string *property_name = zval_get_string(property);
46276 				zend_error(E_WARNING, "Attempt to increment/decrement property '%s' of non-object", ZSTR_VAL(property_name));
46277 				zend_string_release(property_name);
46278 				ZVAL_NULL(EX_VAR(opline->result.var));
46279 				break;
46280 			}
46281 		}
46282 
46283 		/* here we are sure we are dealing with an object */
46284 
46285 		if (EXPECTED(Z_OBJ_HT_P(object)->get_property_ptr_ptr)
46286 			&& EXPECTED((zptr = Z_OBJ_HT_P(object)->get_property_ptr_ptr(object, property, BP_VAR_RW, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL))) != NULL)) {
46287 			if (UNEXPECTED(Z_ISERROR_P(zptr))) {
46288 				ZVAL_NULL(EX_VAR(opline->result.var));
46289 			} else {
46290 				if (EXPECTED(Z_TYPE_P(zptr) == IS_LONG)) {
46291 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
46292 					if (inc) {
46293 						fast_long_increment_function(zptr);
46294 					} else {
46295 						fast_long_decrement_function(zptr);
46296 					}
46297 				} else {
46298 					ZVAL_DEREF(zptr);
46299 					ZVAL_COPY_VALUE(EX_VAR(opline->result.var), zptr);
46300 					zval_opt_copy_ctor(zptr);
46301 					if (inc) {
46302 						increment_function(zptr);
46303 					} else {
46304 						decrement_function(zptr);
46305 					}
46306 				}
46307 			}
46308 		} else {
46309 			zend_post_incdec_overloaded_property(object, property, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), inc, EX_VAR(opline->result.var));
46310 		}
46311 	} while (0);
46312 
46313 	zval_ptr_dtor_nogc(free_op2);
46314 
46315 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46316 }
46317 
46318 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46319 {
46320 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_TMPVAR(1 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46321 }
46322 
46323 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46324 {
46325 	ZEND_VM_TAIL_CALL(zend_post_incdec_property_helper_SPEC_CV_TMPVAR(0 ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
46326 }
46327 
46328 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46329 {
46330 	USE_OPLINE
46331 	zend_free_op free_op2;
46332 	zval *container, *dim, *value, *result;
46333 
46334 	SAVE_OPLINE();
46335 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
46336 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46337 	if (IS_CV != IS_CONST) {
46338 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
46339 fetch_dim_r_array:
46340 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, (IS_TMP_VAR|IS_VAR), BP_VAR_R EXECUTE_DATA_CC);
46341 			result = EX_VAR(opline->result.var);
46342 			ZVAL_COPY_UNREF(result, value);
46343 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
46344 			container = Z_REFVAL_P(container);
46345 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
46346 				goto fetch_dim_r_array;
46347 			} else {
46348 				goto fetch_dim_r_slow;
46349 			}
46350 		} else {
46351 fetch_dim_r_slow:
46352 			result = EX_VAR(opline->result.var);
46353 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
46354 		}
46355 	} else {
46356 		result = EX_VAR(opline->result.var);
46357 		zend_fetch_dimension_address_read_R(result, container, dim, (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
46358 	}
46359 	zval_ptr_dtor_nogc(free_op2);
46360 
46361 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46362 }
46363 
46364 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46365 {
46366 	USE_OPLINE
46367 	zend_free_op free_op1, free_op2;
46368 	zval *container;
46369 
46370 	SAVE_OPLINE();
46371 	container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
46372 
46373 	zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
46374 	zval_ptr_dtor_nogc(free_op2);
46375 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46376 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46377 	}
46378 
46379 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46380 }
46381 
46382 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46383 {
46384 	USE_OPLINE
46385 	zend_free_op free_op1, free_op2;
46386 	zval *container;
46387 
46388 	SAVE_OPLINE();
46389 	container = _get_zval_ptr_cv_undef_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
46390 
46391 	zend_fetch_dimension_address_RW(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
46392 	zval_ptr_dtor_nogc(free_op2);
46393 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46394 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46395 	}
46396 
46397 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46398 }
46399 
46400 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46401 {
46402 	USE_OPLINE
46403 	zend_free_op free_op2;
46404 	zval *container;
46405 
46406 	SAVE_OPLINE();
46407 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
46408 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
46409 	zval_ptr_dtor_nogc(free_op2);
46410 
46411 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46412 }
46413 
46414 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46415 {
46416 	USE_OPLINE
46417 	zval *container;
46418 	zend_free_op free_op1, free_op2;
46419 
46420 	SAVE_OPLINE();
46421 
46422 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
46423         if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
46424             zend_throw_error(NULL, "Cannot use temporary expression in write context");
46425 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
46426 
46427 			ZVAL_UNDEF(EX_VAR(opline->result.var));
46428 			HANDLE_EXCEPTION();
46429         }
46430 		container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
46431 		zend_fetch_dimension_address_W(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
46432 		if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46433 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46434 		}
46435 		zval_ptr_dtor_nogc(free_op2);
46436 
46437 	} else {
46438 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
46439 			zend_throw_error(NULL, "Cannot use [] for reading");
46440 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
46441 
46442 			ZVAL_UNDEF(EX_VAR(opline->result.var));
46443 			HANDLE_EXCEPTION();
46444 		}
46445 		container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
46446 		zend_fetch_dimension_address_read_R(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
46447 		zval_ptr_dtor_nogc(free_op2);
46448 
46449 	}
46450 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46451 }
46452 
46453 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46454 {
46455 	USE_OPLINE
46456 	zend_free_op free_op1, free_op2;
46457 	zval *container;
46458 
46459 	SAVE_OPLINE();
46460 	container = _get_zval_ptr_cv_undef_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
46461 
46462 	zend_fetch_dimension_address_UNSET(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
46463 	zval_ptr_dtor_nogc(free_op2);
46464 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46465 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46466 	}
46467 
46468 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46469 }
46470 
46471 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46472 {
46473 	USE_OPLINE
46474 
46475 	zval *container;
46476 	zend_free_op free_op2;
46477 	zval *offset;
46478 
46479 	SAVE_OPLINE();
46480 	container = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
46481 
46482 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
46483 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46484 	}
46485 
46486 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46487 
46488 	if (IS_CV == IS_CONST ||
46489 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
46490 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
46491 			container = Z_REFVAL_P(container);
46492 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
46493 				goto fetch_obj_r_no_object;
46494 			}
46495 		} else {
46496 			goto fetch_obj_r_no_object;
46497 		}
46498 	}
46499 
46500 	/* here we are sure we are dealing with an object */
46501 	do {
46502 		zend_object *zobj = Z_OBJ_P(container);
46503 		zval *retval;
46504 
46505 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
46506 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
46507 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
46508 
46509 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
46510 				retval = OBJ_PROP(zobj, prop_offset);
46511 				if (EXPECTED(Z_TYPE_INFO_P(retval) != IS_UNDEF)) {
46512 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
46513 					break;
46514 				}
46515 			} else if (EXPECTED(zobj->properties != NULL)) {
46516 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
46517 				if (EXPECTED(retval)) {
46518 					ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
46519 					break;
46520 				}
46521 			}
46522 		}
46523 
46524 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
46525 			zend_string *property_name;
46526 fetch_obj_r_no_object:
46527 			property_name = zval_get_string(offset);
46528 			zend_error(E_NOTICE, "Trying to get property '%s' of non-object", ZSTR_VAL(property_name));
46529 			zend_string_release(property_name);
46530 			ZVAL_NULL(EX_VAR(opline->result.var));
46531 		} else {
46532 			retval = zobj->handlers->read_property(container, offset, BP_VAR_R, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
46533 
46534 			if (retval != EX_VAR(opline->result.var)) {
46535 				ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
46536 			}
46537 		}
46538 	} while (0);
46539 
46540 	zval_ptr_dtor_nogc(free_op2);
46541 
46542 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46543 }
46544 
46545 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46546 {
46547 	USE_OPLINE
46548 	zend_free_op free_op1, free_op2;
46549 	zval *property;
46550 	zval *container;
46551 
46552 	SAVE_OPLINE();
46553 
46554 	container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
46555 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
46556 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46557 	}
46558 
46559 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46560 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
46561 	zval_ptr_dtor_nogc(free_op2);
46562 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46563 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46564 	}
46565 
46566 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46567 }
46568 
46569 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46570 {
46571 	USE_OPLINE
46572 	zend_free_op free_op1, free_op2;
46573 	zval *property;
46574 	zval *container;
46575 
46576 	SAVE_OPLINE();
46577 	container = _get_zval_ptr_cv_BP_VAR_RW(opline->op1.var EXECUTE_DATA_CC);
46578 
46579 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
46580 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46581 	}
46582 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46583 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_RW);
46584 	zval_ptr_dtor_nogc(free_op2);
46585 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46586 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46587 	}
46588 
46589 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46590 }
46591 
46592 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46593 {
46594 	USE_OPLINE
46595 
46596 	zval *container;
46597 	zend_free_op free_op2;
46598 	zval *offset;
46599 
46600 	SAVE_OPLINE();
46601 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
46602 
46603 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
46604 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46605 	}
46606 
46607 	offset  = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46608 
46609 	if (IS_CV == IS_CONST ||
46610 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
46611 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
46612 			container = Z_REFVAL_P(container);
46613 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
46614 				goto fetch_obj_is_no_object;
46615 			}
46616 		} else {
46617 			goto fetch_obj_is_no_object;
46618 		}
46619 	}
46620 
46621 	/* here we are sure we are dealing with an object */
46622 	do {
46623 		zend_object *zobj = Z_OBJ_P(container);
46624 		zval *retval;
46625 
46626 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
46627 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
46628 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
46629 
46630 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
46631 				retval = OBJ_PROP(zobj, prop_offset);
46632 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
46633 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
46634 					break;
46635 				}
46636 			} else if (EXPECTED(zobj->properties != NULL)) {
46637 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
46638 				if (EXPECTED(retval)) {
46639 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
46640 					break;
46641 				}
46642 			}
46643 		}
46644 
46645 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
46646 fetch_obj_is_no_object:
46647 			ZVAL_NULL(EX_VAR(opline->result.var));
46648 		} else {
46649 
46650 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
46651 
46652 			if (retval != EX_VAR(opline->result.var)) {
46653 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
46654 			}
46655 		}
46656 	} while (0);
46657 
46658 	zval_ptr_dtor_nogc(free_op2);
46659 
46660 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46661 }
46662 
46663 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46664 {
46665 	USE_OPLINE
46666 	zval *container;
46667 
46668 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
46669 		/* Behave like FETCH_OBJ_W */
46670 		zend_free_op free_op1, free_op2;
46671 		zval *property;
46672 
46673 		SAVE_OPLINE();
46674 		container = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
46675 
46676 		if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
46677 			ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46678 		}
46679 		if ((IS_CV & (IS_CONST|IS_TMP_VAR))) {
46680 			zend_throw_error(NULL, "Cannot use temporary expression in write context");
46681 			zval_ptr_dtor_nogc(EX_VAR(opline->op2.var));
46682 
46683 			ZVAL_UNDEF(EX_VAR(opline->result.var));
46684 			HANDLE_EXCEPTION();
46685 		}
46686 		property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46687 		zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_W);
46688 		zval_ptr_dtor_nogc(free_op2);
46689 		if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46690 			EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46691 		}
46692 
46693 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46694 	} else {
46695 		ZEND_VM_TAIL_CALL(ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46696 	}
46697 }
46698 
46699 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46700 {
46701 	USE_OPLINE
46702 	zend_free_op free_op1, free_op2;
46703 	zval *container, *property;
46704 
46705 	SAVE_OPLINE();
46706 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
46707 
46708 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
46709 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46710 	}
46711 
46712 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46713 
46714 	zend_fetch_property_address(EX_VAR(opline->result.var), container, IS_CV, property, (IS_TMP_VAR|IS_VAR), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL), BP_VAR_UNSET);
46715 	zval_ptr_dtor_nogc(free_op2);
46716 	if (IS_CV == IS_VAR && READY_TO_DESTROY(free_op1)) {
46717 		EXTRACT_ZVAL_PTR(EX_VAR(opline->result.var));
46718 	}
46719 
46720 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46721 }
46722 
46723 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46724 {
46725 	USE_OPLINE
46726 	zend_free_op free_op2;
46727 	zval *container;
46728 
46729 	SAVE_OPLINE();
46730 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
46731 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC) EXECUTE_DATA_CC);
46732 	zval_ptr_dtor_nogc(free_op2);
46733 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
46734 }
46735 
46736 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46737 {
46738 	USE_OPLINE
46739 	zend_free_op free_op2;
46740 	zval *object, *property, *value, tmp;
46741 
46742 	SAVE_OPLINE();
46743 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
46744 
46745 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
46746 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46747 	}
46748 
46749 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46750 	value = EX_CONSTANT((opline+1)->op1);
46751 
46752 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
46753 		do {
46754 			if (Z_ISREF_P(object)) {
46755 				object = Z_REFVAL_P(object);
46756 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
46757 					break;
46758 				}
46759 			}
46760 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
46761 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
46762 				zend_object *obj;
46763 
46764 				zval_ptr_dtor(object);
46765 				object_init(object);
46766 				Z_ADDREF_P(object);
46767 				obj = Z_OBJ_P(object);
46768 				zend_error(E_WARNING, "Creating default object from empty value");
46769 				if (GC_REFCOUNT(obj) == 1) {
46770 					/* the enclosing container was deleted, obj is unreferenced */
46771 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46772 						ZVAL_NULL(EX_VAR(opline->result.var));
46773 					}
46774 
46775 					OBJ_RELEASE(obj);
46776 					goto exit_assign_obj;
46777 				}
46778 				Z_DELREF_P(object);
46779 			} else {
46780 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
46781 					zend_string *property_name = zval_get_string(property);
46782 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
46783 					zend_string_release(property_name);
46784 				}
46785 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46786 					ZVAL_NULL(EX_VAR(opline->result.var));
46787 				}
46788 
46789 				goto exit_assign_obj;
46790 			}
46791 		} while (0);
46792 	}
46793 
46794 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
46795 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
46796 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
46797 		zend_object *zobj = Z_OBJ_P(object);
46798 		zval *property_val;
46799 
46800 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
46801 			property_val = OBJ_PROP(zobj, prop_offset);
46802 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
46803 fast_assign_obj:
46804 				value = zend_assign_to_variable(property_val, value, IS_CONST);
46805 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46806 					ZVAL_COPY(EX_VAR(opline->result.var), value);
46807 				}
46808 				goto exit_assign_obj;
46809 			}
46810 		} else {
46811 			if (EXPECTED(zobj->properties != NULL)) {
46812 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
46813 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
46814 						GC_REFCOUNT(zobj->properties)--;
46815 					}
46816 					zobj->properties = zend_array_dup(zobj->properties);
46817 				}
46818 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
46819 				if (property_val) {
46820 					goto fast_assign_obj;
46821 				}
46822 			}
46823 
46824 			if (!zobj->ce->__set) {
46825 
46826 				if (EXPECTED(zobj->properties == NULL)) {
46827 					rebuild_object_properties(zobj);
46828 				}
46829 				if (IS_CONST == IS_CONST) {
46830 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
46831 						Z_ADDREF_P(value);
46832 					}
46833 				} else if (IS_CONST != IS_TMP_VAR) {
46834 					if (Z_ISREF_P(value)) {
46835 						if (IS_CONST == IS_VAR) {
46836 							zend_reference *ref = Z_REF_P(value);
46837 							if (--GC_REFCOUNT(ref) == 0) {
46838 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
46839 								efree_size(ref, sizeof(zend_reference));
46840 								value = &tmp;
46841 							} else {
46842 								value = Z_REFVAL_P(value);
46843 								if (Z_REFCOUNTED_P(value)) {
46844 									Z_ADDREF_P(value);
46845 								}
46846 							}
46847 						} else {
46848 							value = Z_REFVAL_P(value);
46849 							if (Z_REFCOUNTED_P(value)) {
46850 								Z_ADDREF_P(value);
46851 							}
46852 						}
46853 					} else if (IS_CONST == IS_CV && Z_REFCOUNTED_P(value)) {
46854 						Z_ADDREF_P(value);
46855 					}
46856 				}
46857 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
46858 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46859 					ZVAL_COPY(EX_VAR(opline->result.var), value);
46860 				}
46861 				goto exit_assign_obj;
46862 			}
46863 		}
46864 	}
46865 
46866 	if (!Z_OBJ_HT_P(object)->write_property) {
46867 		zend_string *property_name = zval_get_string(property);
46868 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
46869 		zend_string_release(property_name);
46870 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46871 			ZVAL_NULL(EX_VAR(opline->result.var));
46872 		}
46873 
46874 		goto exit_assign_obj;
46875 	}
46876 
46877 	if (IS_CONST == IS_CV || IS_CONST == IS_VAR) {
46878 		ZVAL_DEREF(value);
46879 	}
46880 
46881 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
46882 
46883 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46884 		ZVAL_COPY(EX_VAR(opline->result.var), value);
46885 	}
46886 
46887 exit_assign_obj:
46888 	zval_ptr_dtor_nogc(free_op2);
46889 
46890 	/* assign_obj has two opcodes! */
46891 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
46892 }
46893 
46894 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
46895 {
46896 	USE_OPLINE
46897 	zend_free_op free_op2, free_op_data;
46898 	zval *object, *property, *value, tmp;
46899 
46900 	SAVE_OPLINE();
46901 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
46902 
46903 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
46904 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
46905 	}
46906 
46907 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
46908 	value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
46909 
46910 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
46911 		do {
46912 			if (Z_ISREF_P(object)) {
46913 				object = Z_REFVAL_P(object);
46914 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
46915 					break;
46916 				}
46917 			}
46918 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
46919 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
46920 				zend_object *obj;
46921 
46922 				zval_ptr_dtor(object);
46923 				object_init(object);
46924 				Z_ADDREF_P(object);
46925 				obj = Z_OBJ_P(object);
46926 				zend_error(E_WARNING, "Creating default object from empty value");
46927 				if (GC_REFCOUNT(obj) == 1) {
46928 					/* the enclosing container was deleted, obj is unreferenced */
46929 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46930 						ZVAL_NULL(EX_VAR(opline->result.var));
46931 					}
46932 					zval_ptr_dtor_nogc(free_op_data);
46933 					OBJ_RELEASE(obj);
46934 					goto exit_assign_obj;
46935 				}
46936 				Z_DELREF_P(object);
46937 			} else {
46938 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
46939 					zend_string *property_name = zval_get_string(property);
46940 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
46941 					zend_string_release(property_name);
46942 				}
46943 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46944 					ZVAL_NULL(EX_VAR(opline->result.var));
46945 				}
46946 				zval_ptr_dtor_nogc(free_op_data);
46947 				goto exit_assign_obj;
46948 			}
46949 		} while (0);
46950 	}
46951 
46952 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
46953 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
46954 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
46955 		zend_object *zobj = Z_OBJ_P(object);
46956 		zval *property_val;
46957 
46958 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
46959 			property_val = OBJ_PROP(zobj, prop_offset);
46960 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
46961 fast_assign_obj:
46962 				value = zend_assign_to_variable(property_val, value, IS_TMP_VAR);
46963 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
46964 					ZVAL_COPY(EX_VAR(opline->result.var), value);
46965 				}
46966 				goto exit_assign_obj;
46967 			}
46968 		} else {
46969 			if (EXPECTED(zobj->properties != NULL)) {
46970 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
46971 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
46972 						GC_REFCOUNT(zobj->properties)--;
46973 					}
46974 					zobj->properties = zend_array_dup(zobj->properties);
46975 				}
46976 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
46977 				if (property_val) {
46978 					goto fast_assign_obj;
46979 				}
46980 			}
46981 
46982 			if (!zobj->ce->__set) {
46983 
46984 				if (EXPECTED(zobj->properties == NULL)) {
46985 					rebuild_object_properties(zobj);
46986 				}
46987 				if (IS_TMP_VAR == IS_CONST) {
46988 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
46989 						Z_ADDREF_P(value);
46990 					}
46991 				} else if (IS_TMP_VAR != IS_TMP_VAR) {
46992 					if (Z_ISREF_P(value)) {
46993 						if (IS_TMP_VAR == IS_VAR) {
46994 							zend_reference *ref = Z_REF_P(value);
46995 							if (--GC_REFCOUNT(ref) == 0) {
46996 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
46997 								efree_size(ref, sizeof(zend_reference));
46998 								value = &tmp;
46999 							} else {
47000 								value = Z_REFVAL_P(value);
47001 								if (Z_REFCOUNTED_P(value)) {
47002 									Z_ADDREF_P(value);
47003 								}
47004 							}
47005 						} else {
47006 							value = Z_REFVAL_P(value);
47007 							if (Z_REFCOUNTED_P(value)) {
47008 								Z_ADDREF_P(value);
47009 							}
47010 						}
47011 					} else if (IS_TMP_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
47012 						Z_ADDREF_P(value);
47013 					}
47014 				}
47015 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
47016 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47017 					ZVAL_COPY(EX_VAR(opline->result.var), value);
47018 				}
47019 				goto exit_assign_obj;
47020 			}
47021 		}
47022 	}
47023 
47024 	if (!Z_OBJ_HT_P(object)->write_property) {
47025 		zend_string *property_name = zval_get_string(property);
47026 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
47027 		zend_string_release(property_name);
47028 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47029 			ZVAL_NULL(EX_VAR(opline->result.var));
47030 		}
47031 		zval_ptr_dtor_nogc(free_op_data);
47032 		goto exit_assign_obj;
47033 	}
47034 
47035 	if (IS_TMP_VAR == IS_CV || IS_TMP_VAR == IS_VAR) {
47036 		ZVAL_DEREF(value);
47037 	}
47038 
47039 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
47040 
47041 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47042 		ZVAL_COPY(EX_VAR(opline->result.var), value);
47043 	}
47044 	zval_ptr_dtor_nogc(free_op_data);
47045 exit_assign_obj:
47046 	zval_ptr_dtor_nogc(free_op2);
47047 
47048 	/* assign_obj has two opcodes! */
47049 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47050 }
47051 
47052 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47053 {
47054 	USE_OPLINE
47055 	zend_free_op free_op2, free_op_data;
47056 	zval *object, *property, *value, tmp;
47057 
47058 	SAVE_OPLINE();
47059 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47060 
47061 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
47062 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
47063 	}
47064 
47065 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47066 	value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47067 
47068 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
47069 		do {
47070 			if (Z_ISREF_P(object)) {
47071 				object = Z_REFVAL_P(object);
47072 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
47073 					break;
47074 				}
47075 			}
47076 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
47077 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
47078 				zend_object *obj;
47079 
47080 				zval_ptr_dtor(object);
47081 				object_init(object);
47082 				Z_ADDREF_P(object);
47083 				obj = Z_OBJ_P(object);
47084 				zend_error(E_WARNING, "Creating default object from empty value");
47085 				if (GC_REFCOUNT(obj) == 1) {
47086 					/* the enclosing container was deleted, obj is unreferenced */
47087 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47088 						ZVAL_NULL(EX_VAR(opline->result.var));
47089 					}
47090 					zval_ptr_dtor_nogc(free_op_data);
47091 					OBJ_RELEASE(obj);
47092 					goto exit_assign_obj;
47093 				}
47094 				Z_DELREF_P(object);
47095 			} else {
47096 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
47097 					zend_string *property_name = zval_get_string(property);
47098 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
47099 					zend_string_release(property_name);
47100 				}
47101 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47102 					ZVAL_NULL(EX_VAR(opline->result.var));
47103 				}
47104 				zval_ptr_dtor_nogc(free_op_data);
47105 				goto exit_assign_obj;
47106 			}
47107 		} while (0);
47108 	}
47109 
47110 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
47111 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
47112 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
47113 		zend_object *zobj = Z_OBJ_P(object);
47114 		zval *property_val;
47115 
47116 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
47117 			property_val = OBJ_PROP(zobj, prop_offset);
47118 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
47119 fast_assign_obj:
47120 				value = zend_assign_to_variable(property_val, value, IS_VAR);
47121 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47122 					ZVAL_COPY(EX_VAR(opline->result.var), value);
47123 				}
47124 				goto exit_assign_obj;
47125 			}
47126 		} else {
47127 			if (EXPECTED(zobj->properties != NULL)) {
47128 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
47129 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
47130 						GC_REFCOUNT(zobj->properties)--;
47131 					}
47132 					zobj->properties = zend_array_dup(zobj->properties);
47133 				}
47134 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
47135 				if (property_val) {
47136 					goto fast_assign_obj;
47137 				}
47138 			}
47139 
47140 			if (!zobj->ce->__set) {
47141 
47142 				if (EXPECTED(zobj->properties == NULL)) {
47143 					rebuild_object_properties(zobj);
47144 				}
47145 				if (IS_VAR == IS_CONST) {
47146 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
47147 						Z_ADDREF_P(value);
47148 					}
47149 				} else if (IS_VAR != IS_TMP_VAR) {
47150 					if (Z_ISREF_P(value)) {
47151 						if (IS_VAR == IS_VAR) {
47152 							zend_reference *ref = Z_REF_P(value);
47153 							if (--GC_REFCOUNT(ref) == 0) {
47154 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
47155 								efree_size(ref, sizeof(zend_reference));
47156 								value = &tmp;
47157 							} else {
47158 								value = Z_REFVAL_P(value);
47159 								if (Z_REFCOUNTED_P(value)) {
47160 									Z_ADDREF_P(value);
47161 								}
47162 							}
47163 						} else {
47164 							value = Z_REFVAL_P(value);
47165 							if (Z_REFCOUNTED_P(value)) {
47166 								Z_ADDREF_P(value);
47167 							}
47168 						}
47169 					} else if (IS_VAR == IS_CV && Z_REFCOUNTED_P(value)) {
47170 						Z_ADDREF_P(value);
47171 					}
47172 				}
47173 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
47174 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47175 					ZVAL_COPY(EX_VAR(opline->result.var), value);
47176 				}
47177 				goto exit_assign_obj;
47178 			}
47179 		}
47180 	}
47181 
47182 	if (!Z_OBJ_HT_P(object)->write_property) {
47183 		zend_string *property_name = zval_get_string(property);
47184 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
47185 		zend_string_release(property_name);
47186 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47187 			ZVAL_NULL(EX_VAR(opline->result.var));
47188 		}
47189 		zval_ptr_dtor_nogc(free_op_data);
47190 		goto exit_assign_obj;
47191 	}
47192 
47193 	if (IS_VAR == IS_CV || IS_VAR == IS_VAR) {
47194 		ZVAL_DEREF(value);
47195 	}
47196 
47197 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
47198 
47199 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47200 		ZVAL_COPY(EX_VAR(opline->result.var), value);
47201 	}
47202 	zval_ptr_dtor_nogc(free_op_data);
47203 exit_assign_obj:
47204 	zval_ptr_dtor_nogc(free_op2);
47205 
47206 	/* assign_obj has two opcodes! */
47207 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47208 }
47209 
47210 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47211 {
47212 	USE_OPLINE
47213 	zend_free_op free_op2;
47214 	zval *object, *property, *value, tmp;
47215 
47216 	SAVE_OPLINE();
47217 	object = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47218 
47219 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
47220 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
47221 	}
47222 
47223 	property = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47224 	value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47225 
47226 	if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
47227 		do {
47228 			if (Z_ISREF_P(object)) {
47229 				object = Z_REFVAL_P(object);
47230 				if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
47231 					break;
47232 				}
47233 			}
47234 			if (EXPECTED(Z_TYPE_P(object) <= IS_FALSE ||
47235 			    (Z_TYPE_P(object) == IS_STRING && Z_STRLEN_P(object) == 0))) {
47236 				zend_object *obj;
47237 
47238 				zval_ptr_dtor(object);
47239 				object_init(object);
47240 				Z_ADDREF_P(object);
47241 				obj = Z_OBJ_P(object);
47242 				zend_error(E_WARNING, "Creating default object from empty value");
47243 				if (GC_REFCOUNT(obj) == 1) {
47244 					/* the enclosing container was deleted, obj is unreferenced */
47245 					if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47246 						ZVAL_NULL(EX_VAR(opline->result.var));
47247 					}
47248 
47249 					OBJ_RELEASE(obj);
47250 					goto exit_assign_obj;
47251 				}
47252 				Z_DELREF_P(object);
47253 			} else {
47254 				if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object))) {
47255 					zend_string *property_name = zval_get_string(property);
47256 					zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
47257 					zend_string_release(property_name);
47258 				}
47259 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47260 					ZVAL_NULL(EX_VAR(opline->result.var));
47261 				}
47262 
47263 				goto exit_assign_obj;
47264 			}
47265 		} while (0);
47266 	}
47267 
47268 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
47269 	    EXPECTED(Z_OBJCE_P(object) == CACHED_PTR(Z_CACHE_SLOT_P(property)))) {
47270 		uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(property) + sizeof(void*));
47271 		zend_object *zobj = Z_OBJ_P(object);
47272 		zval *property_val;
47273 
47274 		if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
47275 			property_val = OBJ_PROP(zobj, prop_offset);
47276 			if (Z_TYPE_P(property_val) != IS_UNDEF) {
47277 fast_assign_obj:
47278 				value = zend_assign_to_variable(property_val, value, IS_CV);
47279 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47280 					ZVAL_COPY(EX_VAR(opline->result.var), value);
47281 				}
47282 				goto exit_assign_obj;
47283 			}
47284 		} else {
47285 			if (EXPECTED(zobj->properties != NULL)) {
47286 				if (UNEXPECTED(GC_REFCOUNT(zobj->properties) > 1)) {
47287 					if (EXPECTED(!(GC_FLAGS(zobj->properties) & IS_ARRAY_IMMUTABLE))) {
47288 						GC_REFCOUNT(zobj->properties)--;
47289 					}
47290 					zobj->properties = zend_array_dup(zobj->properties);
47291 				}
47292 				property_val = zend_hash_find(zobj->properties, Z_STR_P(property));
47293 				if (property_val) {
47294 					goto fast_assign_obj;
47295 				}
47296 			}
47297 
47298 			if (!zobj->ce->__set) {
47299 
47300 				if (EXPECTED(zobj->properties == NULL)) {
47301 					rebuild_object_properties(zobj);
47302 				}
47303 				if (IS_CV == IS_CONST) {
47304 					if (UNEXPECTED(Z_OPT_REFCOUNTED_P(value))) {
47305 						Z_ADDREF_P(value);
47306 					}
47307 				} else if (IS_CV != IS_TMP_VAR) {
47308 					if (Z_ISREF_P(value)) {
47309 						if (IS_CV == IS_VAR) {
47310 							zend_reference *ref = Z_REF_P(value);
47311 							if (--GC_REFCOUNT(ref) == 0) {
47312 								ZVAL_COPY_VALUE(&tmp, Z_REFVAL_P(value));
47313 								efree_size(ref, sizeof(zend_reference));
47314 								value = &tmp;
47315 							} else {
47316 								value = Z_REFVAL_P(value);
47317 								if (Z_REFCOUNTED_P(value)) {
47318 									Z_ADDREF_P(value);
47319 								}
47320 							}
47321 						} else {
47322 							value = Z_REFVAL_P(value);
47323 							if (Z_REFCOUNTED_P(value)) {
47324 								Z_ADDREF_P(value);
47325 							}
47326 						}
47327 					} else if (IS_CV == IS_CV && Z_REFCOUNTED_P(value)) {
47328 						Z_ADDREF_P(value);
47329 					}
47330 				}
47331 				zend_hash_add_new(zobj->properties, Z_STR_P(property), value);
47332 				if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47333 					ZVAL_COPY(EX_VAR(opline->result.var), value);
47334 				}
47335 				goto exit_assign_obj;
47336 			}
47337 		}
47338 	}
47339 
47340 	if (!Z_OBJ_HT_P(object)->write_property) {
47341 		zend_string *property_name = zval_get_string(property);
47342 		zend_error(E_WARNING, "Attempt to assign property '%s' of non-object", ZSTR_VAL(property_name));
47343 		zend_string_release(property_name);
47344 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47345 			ZVAL_NULL(EX_VAR(opline->result.var));
47346 		}
47347 
47348 		goto exit_assign_obj;
47349 	}
47350 
47351 	if (IS_CV == IS_CV || IS_CV == IS_VAR) {
47352 		ZVAL_DEREF(value);
47353 	}
47354 
47355 	Z_OBJ_HT_P(object)->write_property(object, property, value, ((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(property)) : NULL);
47356 
47357 	if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47358 		ZVAL_COPY(EX_VAR(opline->result.var), value);
47359 	}
47360 
47361 exit_assign_obj:
47362 	zval_ptr_dtor_nogc(free_op2);
47363 
47364 	/* assign_obj has two opcodes! */
47365 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47366 }
47367 
47368 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47369 {
47370 	USE_OPLINE
47371 
47372 	zval *object_ptr;
47373 	zend_free_op free_op2;
47374 	zval *value;
47375 	zval *variable_ptr;
47376 	zval *dim;
47377 
47378 	SAVE_OPLINE();
47379 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47380 
47381 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47382 try_assign_dim_array:
47383 		SEPARATE_ARRAY(object_ptr);
47384 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47385 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
47386 			if (UNEXPECTED(variable_ptr == NULL)) {
47387 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
47388 				goto assign_dim_error;
47389 			}
47390 		} else {
47391 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47392 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
47393 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47394 			} else {
47395 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47396 			}
47397 			if (UNEXPECTED(variable_ptr == NULL)) {
47398 				goto assign_dim_error;
47399 			}
47400 		}
47401 		value = EX_CONSTANT((opline+1)->op1);
47402 		value = zend_assign_to_variable(variable_ptr, value, IS_CONST);
47403 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47404 			ZVAL_COPY(EX_VAR(opline->result.var), value);
47405 		}
47406 	} else {
47407 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
47408 			object_ptr = Z_REFVAL_P(object_ptr);
47409 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47410 				goto try_assign_dim_array;
47411 			}
47412 		}
47413 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
47414 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47415 			value = EX_CONSTANT((opline+1)->op1);
47416 
47417 			zend_assign_to_object_dim(object_ptr, dim, value);
47418 
47419 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47420 				ZVAL_COPY(EX_VAR(opline->result.var), value);
47421 			}
47422 
47423 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
47424 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47425 				zend_throw_error(NULL, "[] operator not supported for strings");
47426 
47427 
47428 				UNDEF_RESULT();
47429 				HANDLE_EXCEPTION();
47430 			} else {
47431 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47432 				value = EX_CONSTANT((opline+1)->op1);
47433 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
47434 
47435 			}
47436 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
47437 			ZVAL_NEW_ARR(object_ptr);
47438 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
47439 			goto try_assign_dim_array;
47440 		} else {
47441 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
47442 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
47443 			}
47444 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47445 assign_dim_error:
47446 
47447 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47448 				ZVAL_NULL(EX_VAR(opline->result.var));
47449 			}
47450 		}
47451 	}
47452 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
47453 		zval_ptr_dtor_nogc(free_op2);
47454 	}
47455 
47456 	/* assign_dim has two opcodes! */
47457 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47458 }
47459 
47460 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47461 {
47462 	USE_OPLINE
47463 
47464 	zval *object_ptr;
47465 	zend_free_op free_op2, free_op_data;
47466 	zval *value;
47467 	zval *variable_ptr;
47468 	zval *dim;
47469 
47470 	SAVE_OPLINE();
47471 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47472 
47473 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47474 try_assign_dim_array:
47475 		SEPARATE_ARRAY(object_ptr);
47476 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47477 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
47478 			if (UNEXPECTED(variable_ptr == NULL)) {
47479 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
47480 				goto assign_dim_error;
47481 			}
47482 		} else {
47483 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47484 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
47485 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47486 			} else {
47487 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47488 			}
47489 			if (UNEXPECTED(variable_ptr == NULL)) {
47490 				goto assign_dim_error;
47491 			}
47492 		}
47493 		value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47494 		value = zend_assign_to_variable(variable_ptr, value, IS_TMP_VAR);
47495 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47496 			ZVAL_COPY(EX_VAR(opline->result.var), value);
47497 		}
47498 	} else {
47499 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
47500 			object_ptr = Z_REFVAL_P(object_ptr);
47501 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47502 				goto try_assign_dim_array;
47503 			}
47504 		}
47505 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
47506 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47507 			value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47508 
47509 			zend_assign_to_object_dim(object_ptr, dim, value);
47510 
47511 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47512 				ZVAL_COPY(EX_VAR(opline->result.var), value);
47513 			}
47514 
47515 			zval_ptr_dtor_nogc(free_op_data);
47516 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
47517 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47518 				zend_throw_error(NULL, "[] operator not supported for strings");
47519 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
47520 
47521 				UNDEF_RESULT();
47522 				HANDLE_EXCEPTION();
47523 			} else {
47524 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47525 				value = _get_zval_ptr_tmp((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47526 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
47527 				zval_ptr_dtor_nogc(free_op_data);
47528 			}
47529 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
47530 			ZVAL_NEW_ARR(object_ptr);
47531 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
47532 			goto try_assign_dim_array;
47533 		} else {
47534 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
47535 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
47536 			}
47537 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47538 assign_dim_error:
47539 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
47540 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47541 				ZVAL_NULL(EX_VAR(opline->result.var));
47542 			}
47543 		}
47544 	}
47545 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
47546 		zval_ptr_dtor_nogc(free_op2);
47547 	}
47548 
47549 	/* assign_dim has two opcodes! */
47550 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47551 }
47552 
47553 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47554 {
47555 	USE_OPLINE
47556 
47557 	zval *object_ptr;
47558 	zend_free_op free_op2, free_op_data;
47559 	zval *value;
47560 	zval *variable_ptr;
47561 	zval *dim;
47562 
47563 	SAVE_OPLINE();
47564 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47565 
47566 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47567 try_assign_dim_array:
47568 		SEPARATE_ARRAY(object_ptr);
47569 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47570 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
47571 			if (UNEXPECTED(variable_ptr == NULL)) {
47572 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
47573 				goto assign_dim_error;
47574 			}
47575 		} else {
47576 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47577 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
47578 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47579 			} else {
47580 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47581 			}
47582 			if (UNEXPECTED(variable_ptr == NULL)) {
47583 				goto assign_dim_error;
47584 			}
47585 		}
47586 		value = _get_zval_ptr_var((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47587 		value = zend_assign_to_variable(variable_ptr, value, IS_VAR);
47588 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47589 			ZVAL_COPY(EX_VAR(opline->result.var), value);
47590 		}
47591 	} else {
47592 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
47593 			object_ptr = Z_REFVAL_P(object_ptr);
47594 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47595 				goto try_assign_dim_array;
47596 			}
47597 		}
47598 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
47599 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47600 			value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47601 
47602 			zend_assign_to_object_dim(object_ptr, dim, value);
47603 
47604 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47605 				ZVAL_COPY(EX_VAR(opline->result.var), value);
47606 			}
47607 
47608 			zval_ptr_dtor_nogc(free_op_data);
47609 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
47610 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47611 				zend_throw_error(NULL, "[] operator not supported for strings");
47612 				zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
47613 
47614 				UNDEF_RESULT();
47615 				HANDLE_EXCEPTION();
47616 			} else {
47617 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47618 				value = _get_zval_ptr_var_deref((opline+1)->op1.var, &free_op_data EXECUTE_DATA_CC);
47619 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
47620 				zval_ptr_dtor_nogc(free_op_data);
47621 			}
47622 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
47623 			ZVAL_NEW_ARR(object_ptr);
47624 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
47625 			goto try_assign_dim_array;
47626 		} else {
47627 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
47628 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
47629 			}
47630 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47631 assign_dim_error:
47632 			zval_ptr_dtor_nogc(EX_VAR((opline+1)->op1.var));
47633 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47634 				ZVAL_NULL(EX_VAR(opline->result.var));
47635 			}
47636 		}
47637 	}
47638 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
47639 		zval_ptr_dtor_nogc(free_op2);
47640 	}
47641 
47642 	/* assign_dim has two opcodes! */
47643 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47644 }
47645 
47646 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47647 {
47648 	USE_OPLINE
47649 
47650 	zval *object_ptr;
47651 	zend_free_op free_op2;
47652 	zval *value;
47653 	zval *variable_ptr;
47654 	zval *dim;
47655 
47656 	SAVE_OPLINE();
47657 	object_ptr = _get_zval_ptr_cv_undef_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
47658 
47659 	if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47660 try_assign_dim_array:
47661 		SEPARATE_ARRAY(object_ptr);
47662 		if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47663 			variable_ptr = zend_hash_next_index_insert(Z_ARRVAL_P(object_ptr), &EG(uninitialized_zval));
47664 			if (UNEXPECTED(variable_ptr == NULL)) {
47665 				zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
47666 				goto assign_dim_error;
47667 			}
47668 		} else {
47669 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47670 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
47671 				variable_ptr = zend_fetch_dimension_address_inner_W_CONST(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47672 			} else {
47673 				variable_ptr = zend_fetch_dimension_address_inner_W(Z_ARRVAL_P(object_ptr), dim EXECUTE_DATA_CC);
47674 			}
47675 			if (UNEXPECTED(variable_ptr == NULL)) {
47676 				goto assign_dim_error;
47677 			}
47678 		}
47679 		value = _get_zval_ptr_cv_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47680 		value = zend_assign_to_variable(variable_ptr, value, IS_CV);
47681 		if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47682 			ZVAL_COPY(EX_VAR(opline->result.var), value);
47683 		}
47684 	} else {
47685 		if (EXPECTED(Z_ISREF_P(object_ptr))) {
47686 			object_ptr = Z_REFVAL_P(object_ptr);
47687 			if (EXPECTED(Z_TYPE_P(object_ptr) == IS_ARRAY)) {
47688 				goto try_assign_dim_array;
47689 			}
47690 		}
47691 		if (EXPECTED(Z_TYPE_P(object_ptr) == IS_OBJECT)) {
47692 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47693 			value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47694 
47695 			zend_assign_to_object_dim(object_ptr, dim, value);
47696 
47697 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47698 				ZVAL_COPY(EX_VAR(opline->result.var), value);
47699 			}
47700 
47701 		} else if (EXPECTED(Z_TYPE_P(object_ptr) == IS_STRING)) {
47702 			if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED) {
47703 				zend_throw_error(NULL, "[] operator not supported for strings");
47704 
47705 
47706 				UNDEF_RESULT();
47707 				HANDLE_EXCEPTION();
47708 			} else {
47709 				dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47710 				value = _get_zval_ptr_cv_deref_BP_VAR_R((opline+1)->op1.var EXECUTE_DATA_CC);
47711 				zend_assign_to_string_offset(object_ptr, dim, value, (UNEXPECTED(RETURN_VALUE_USED(opline)) ? EX_VAR(opline->result.var) : NULL) EXECUTE_DATA_CC);
47712 
47713 			}
47714 		} else if (EXPECTED(Z_TYPE_P(object_ptr) <= IS_FALSE)) {
47715 			ZVAL_NEW_ARR(object_ptr);
47716 			zend_hash_init(Z_ARRVAL_P(object_ptr), 8, NULL, ZVAL_PTR_DTOR, 0);
47717 			goto try_assign_dim_array;
47718 		} else {
47719 			if (IS_CV != IS_VAR || EXPECTED(!Z_ISERROR_P(object_ptr))) {
47720 				zend_error(E_WARNING, "Cannot use a scalar value as an array");
47721 			}
47722 			dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47723 assign_dim_error:
47724 
47725 			if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
47726 				ZVAL_NULL(EX_VAR(opline->result.var));
47727 			}
47728 		}
47729 	}
47730 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
47731 		zval_ptr_dtor_nogc(free_op2);
47732 	}
47733 
47734 	/* assign_dim has two opcodes! */
47735 	ZEND_VM_NEXT_OPCODE_EX(1, 2);
47736 }
47737 
47738 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47739 {
47740 	USE_OPLINE
47741 	zend_free_op free_op2;
47742 	zval *op1, *op2;
47743 	zend_string *op1_str, *op2_str, *str;
47744 
47745 
47746 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
47747 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47748 	if ((IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
47749 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
47750 		zend_string *op1_str = Z_STR_P(op1);
47751 		zend_string *op2_str = Z_STR_P(op2);
47752 		zend_string *str;
47753 
47754 		do {
47755 			if (IS_CV != IS_CONST) {
47756 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
47757 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
47758 
47759 					break;
47760 				}
47761 			}
47762 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
47763 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
47764 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
47765 
47766 					break;
47767 				}
47768 			}
47769 			if (IS_CV != IS_CONST && IS_CV != IS_CV &&
47770 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
47771 			    size_t len = ZSTR_LEN(op1_str);
47772 
47773 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
47774 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
47775 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
47776 				break;
47777 			} else {
47778 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
47779 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
47780 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
47781 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
47782 			}
47783 
47784 		} while (0);
47785 		zval_ptr_dtor_nogc(free_op2);
47786 		ZEND_VM_NEXT_OPCODE();
47787 	}
47788 
47789 	SAVE_OPLINE();
47790 	if (IS_CV == IS_CONST) {
47791 		op1_str = Z_STR_P(op1);
47792 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
47793 		op1_str = zend_string_copy(Z_STR_P(op1));
47794 	} else {
47795 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
47796 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
47797 		}
47798 		op1_str = _zval_get_string_func(op1);
47799 	}
47800 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
47801 		op2_str = Z_STR_P(op2);
47802 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
47803 		op2_str = zend_string_copy(Z_STR_P(op2));
47804 	} else {
47805 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
47806 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
47807 		}
47808 		op2_str = _zval_get_string_func(op2);
47809 	}
47810 	do {
47811 		if (IS_CV != IS_CONST) {
47812 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
47813 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
47814 					zend_string_addref(op2_str);
47815 				}
47816 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
47817 				zend_string_release(op1_str);
47818 				break;
47819 			}
47820 		}
47821 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
47822 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
47823 				if (IS_CV == IS_CONST) {
47824 					zend_string_addref(op1_str);
47825 				}
47826 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
47827 				zend_string_release(op2_str);
47828 				break;
47829 			}
47830 		}
47831 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
47832 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
47833 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
47834 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
47835 		if (IS_CV != IS_CONST) {
47836 			zend_string_release(op1_str);
47837 		}
47838 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
47839 			zend_string_release(op2_str);
47840 		}
47841 	} while (0);
47842 
47843 	zval_ptr_dtor_nogc(free_op2);
47844 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
47845 }
47846 
47847 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47848 {
47849 	USE_OPLINE
47850 	zval *function_name;
47851 	zend_free_op free_op2;
47852 	zval *object;
47853 	zend_function *fbc;
47854 	zend_class_entry *called_scope;
47855 	zend_object *obj;
47856 	zend_execute_data *call;
47857 	uint32_t call_info;
47858 
47859 	SAVE_OPLINE();
47860 
47861 	object = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
47862 
47863 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
47864 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
47865 	}
47866 
47867 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47868 
47869 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
47870 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
47871 		do {
47872 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
47873 				function_name = Z_REFVAL_P(function_name);
47874 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
47875 					break;
47876 				}
47877 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
47878 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
47879 				if (UNEXPECTED(EG(exception) != NULL)) {
47880 
47881 					HANDLE_EXCEPTION();
47882 				}
47883 			}
47884 			zend_throw_error(NULL, "Method name must be a string");
47885 			zval_ptr_dtor_nogc(free_op2);
47886 
47887 			HANDLE_EXCEPTION();
47888 		} while (0);
47889 	}
47890 
47891 	if (IS_CV != IS_UNUSED) {
47892 		do {
47893 			if (IS_CV == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
47894 				if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
47895 					object = Z_REFVAL_P(object);
47896 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
47897 						break;
47898 					}
47899 				}
47900 				if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
47901 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
47902 					if (UNEXPECTED(EG(exception) != NULL)) {
47903 						zval_ptr_dtor_nogc(free_op2);
47904 						HANDLE_EXCEPTION();
47905 					}
47906 				}
47907 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
47908 				zval_ptr_dtor_nogc(free_op2);
47909 
47910 				HANDLE_EXCEPTION();
47911 			}
47912 		} while (0);
47913 	}
47914 
47915 	obj = Z_OBJ_P(object);
47916 	called_scope = obj->ce;
47917 
47918 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
47919 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
47920 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
47921 	} else {
47922 	    zend_object *orig_obj = obj;
47923 
47924 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
47925 			zend_throw_error(NULL, "Object does not support method calls");
47926 			zval_ptr_dtor_nogc(free_op2);
47927 
47928 			HANDLE_EXCEPTION();
47929 		}
47930 
47931 		/* First, locate the function. */
47932 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
47933 		if (UNEXPECTED(fbc == NULL)) {
47934 			if (EXPECTED(!EG(exception))) {
47935 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
47936 			}
47937 			zval_ptr_dtor_nogc(free_op2);
47938 
47939 			HANDLE_EXCEPTION();
47940 		}
47941 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
47942 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
47943 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
47944 		    EXPECTED(obj == orig_obj)) {
47945 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
47946 		}
47947 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
47948 			init_func_run_time_cache(&fbc->op_array);
47949 		}
47950 	}
47951 
47952 	call_info = ZEND_CALL_NESTED_FUNCTION;
47953 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
47954 		obj = NULL;
47955 	} else if (IS_CV & (IS_VAR|IS_TMP_VAR|IS_CV)) {
47956 		/* CV may be changed indirectly (e.g. when it's a reference) */
47957 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
47958 		GC_REFCOUNT(obj)++; /* For $this pointer */
47959 	}
47960 
47961 	zval_ptr_dtor_nogc(free_op2);
47962 
47963 	if ((IS_CV & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
47964 		HANDLE_EXCEPTION();
47965 	}
47966 
47967 	call = zend_vm_stack_push_call_frame(call_info,
47968 		fbc, opline->extended_value, called_scope, obj);
47969 	call->prev_execute_data = EX(call);
47970 	EX(call) = call;
47971 
47972 	ZEND_VM_NEXT_OPCODE();
47973 }
47974 
47975 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
47976 {
47977 	USE_OPLINE
47978 	zend_free_op free_op2;
47979 	zval *op1, *op2, *result;
47980 
47981 	op1 = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
47982 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
47983 	do {
47984 		int result;
47985 
47986 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
47987 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
47988 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
47989 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
47990 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
47991 			} else {
47992 				break;
47993 			}
47994 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
47995 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
47996 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
47997 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
47998 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
47999 			} else {
48000 				break;
48001 			}
48002 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
48003 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
48004 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
48005 					result = 1;
48006 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
48007 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
48008 						result = 0;
48009 					} else {
48010 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
48011 					}
48012 				} else {
48013 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
48014 				}
48015 				zval_ptr_dtor_nogc(free_op2);
48016 			} else {
48017 				break;
48018 			}
48019 		} else {
48020 			break;
48021 		}
48022 		ZEND_VM_SMART_BRANCH(result, 0);
48023 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
48024 		ZEND_VM_NEXT_OPCODE();
48025 	} while (0);
48026 
48027 	SAVE_OPLINE();
48028 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
48029 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
48030 	}
48031 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
48032 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
48033 	}
48034 	result = EX_VAR(opline->result.var);
48035 	compare_function(result, op1, op2);
48036 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
48037 	zval_ptr_dtor_nogc(free_op2);
48038 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48039 }
48040 
48041 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48042 {
48043 	USE_OPLINE
48044 
48045 	zval *expr_ptr, new_expr;
48046 
48047 	SAVE_OPLINE();
48048 	if ((IS_CV == IS_VAR || IS_CV == IS_CV) &&
48049 	    UNEXPECTED(opline->extended_value & ZEND_ARRAY_ELEMENT_REF)) {
48050 		expr_ptr = _get_zval_ptr_cv_BP_VAR_W(opline->op1.var EXECUTE_DATA_CC);
48051 		ZVAL_MAKE_REF(expr_ptr);
48052 		Z_ADDREF_P(expr_ptr);
48053 
48054 	} else {
48055 		expr_ptr = _get_zval_ptr_cv_BP_VAR_R(opline->op1.var EXECUTE_DATA_CC);
48056 		if (IS_CV == IS_TMP_VAR) {
48057 			/* pass */
48058 		} else if (IS_CV == IS_CONST) {
48059 			if (Z_REFCOUNTED_P(expr_ptr)) {
48060 				Z_ADDREF_P(expr_ptr);
48061 			}
48062 		} else if (IS_CV == IS_CV) {
48063 			ZVAL_DEREF(expr_ptr);
48064 			if (Z_REFCOUNTED_P(expr_ptr)) {
48065 				Z_ADDREF_P(expr_ptr);
48066 			}
48067 		} else /* if (IS_CV == IS_VAR) */ {
48068 			if (UNEXPECTED(Z_ISREF_P(expr_ptr))) {
48069 				zend_refcounted *ref = Z_COUNTED_P(expr_ptr);
48070 
48071 				expr_ptr = Z_REFVAL_P(expr_ptr);
48072 				if (UNEXPECTED(--GC_REFCOUNT(ref) == 0)) {
48073 					ZVAL_COPY_VALUE(&new_expr, expr_ptr);
48074 					expr_ptr = &new_expr;
48075 					efree_size(ref, sizeof(zend_reference));
48076 				} else if (Z_OPT_REFCOUNTED_P(expr_ptr)) {
48077 					Z_ADDREF_P(expr_ptr);
48078 				}
48079 			}
48080 		}
48081 	}
48082 
48083 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
48084 		zend_free_op free_op2;
48085 		zval *offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
48086 		zend_string *str;
48087 		zend_ulong hval;
48088 
48089 add_again:
48090 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
48091 			str = Z_STR_P(offset);
48092 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
48093 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
48094 					goto num_index;
48095 				}
48096 			}
48097 str_index:
48098 			zend_hash_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), str, expr_ptr);
48099 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
48100 			hval = Z_LVAL_P(offset);
48101 num_index:
48102 			zend_hash_index_update(Z_ARRVAL_P(EX_VAR(opline->result.var)), hval, expr_ptr);
48103 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
48104 			offset = Z_REFVAL_P(offset);
48105 			goto add_again;
48106 		} else if (Z_TYPE_P(offset) == IS_NULL) {
48107 			str = ZSTR_EMPTY_ALLOC();
48108 			goto str_index;
48109 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
48110 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
48111 			goto num_index;
48112 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
48113 			hval = 0;
48114 			goto num_index;
48115 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
48116 			hval = 1;
48117 			goto num_index;
48118 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
48119 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
48120 			str = ZSTR_EMPTY_ALLOC();
48121 			goto str_index;
48122 		} else {
48123 			zend_error(E_WARNING, "Illegal offset type");
48124 			zval_ptr_dtor(expr_ptr);
48125 		}
48126 		zval_ptr_dtor_nogc(free_op2);
48127 	} else {
48128 		if (!zend_hash_next_index_insert(Z_ARRVAL_P(EX_VAR(opline->result.var)), expr_ptr)) {
48129 			zend_error(E_WARNING, "Cannot add element to the array as the next element is already occupied");
48130 			zval_ptr_dtor(expr_ptr);
48131 		}
48132 	}
48133 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48134 }
48135 
48136 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48137 {
48138 	zval *array;
48139 	uint32_t size;
48140 	USE_OPLINE
48141 
48142 	array = EX_VAR(opline->result.var);
48143 	if (IS_CV != IS_UNUSED) {
48144 		size = opline->extended_value >> ZEND_ARRAY_SIZE_SHIFT;
48145 	} else {
48146 		size = 0;
48147 	}
48148 	ZVAL_NEW_ARR(array);
48149 	zend_hash_init(Z_ARRVAL_P(array), size, NULL, ZVAL_PTR_DTOR, 0);
48150 
48151 	if (IS_CV != IS_UNUSED) {
48152 		/* Explicitly initialize array as not-packed if flag is set */
48153 		if (opline->extended_value & ZEND_ARRAY_NOT_PACKED) {
48154 			zend_hash_real_init(Z_ARRVAL_P(array), 0);
48155 		}
48156 	}
48157 
48158 	ZEND_VM_TAIL_CALL(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
48159 }
48160 
48161 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48162 {
48163 	USE_OPLINE
48164 	zend_free_op free_op2;
48165 	zval *container;
48166 	zval *offset;
48167 	zend_ulong hval;
48168 	zend_string *key;
48169 
48170 	SAVE_OPLINE();
48171 	container = _get_zval_ptr_cv_undef_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
48172 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
48173 
48174 	do {
48175 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48176 			HashTable *ht;
48177 
48178 unset_dim_array:
48179 			SEPARATE_ARRAY(container);
48180 			ht = Z_ARRVAL_P(container);
48181 offset_again:
48182 			if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
48183 				key = Z_STR_P(offset);
48184 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
48185 					if (ZEND_HANDLE_NUMERIC(key, hval)) {
48186 						goto num_index_dim;
48187 					}
48188 				}
48189 str_index_dim:
48190 				if (ht == &EG(symbol_table)) {
48191 					zend_delete_global_variable(key);
48192 				} else {
48193 					zend_hash_del(ht, key);
48194 				}
48195 			} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
48196 				hval = Z_LVAL_P(offset);
48197 num_index_dim:
48198 				zend_hash_index_del(ht, hval);
48199 			} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_TYPE_P(offset) == IS_REFERENCE)) {
48200 				offset = Z_REFVAL_P(offset);
48201 				goto offset_again;
48202 			} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
48203 				hval = zend_dval_to_lval(Z_DVAL_P(offset));
48204 				goto num_index_dim;
48205 			} else if (Z_TYPE_P(offset) == IS_NULL) {
48206 				key = ZSTR_EMPTY_ALLOC();
48207 				goto str_index_dim;
48208 			} else if (Z_TYPE_P(offset) == IS_FALSE) {
48209 				hval = 0;
48210 				goto num_index_dim;
48211 			} else if (Z_TYPE_P(offset) == IS_TRUE) {
48212 				hval = 1;
48213 				goto num_index_dim;
48214 			} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
48215 				hval = Z_RES_HANDLE_P(offset);
48216 				goto num_index_dim;
48217 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
48218 				GET_OP2_UNDEF_CV(offset, BP_VAR_R);
48219 				key = ZSTR_EMPTY_ALLOC();
48220 				goto str_index_dim;
48221 			} else {
48222 				zend_error(E_WARNING, "Illegal offset type in unset");
48223 			}
48224 			break;
48225 		} else if (Z_ISREF_P(container)) {
48226 			container = Z_REFVAL_P(container);
48227 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48228 				goto unset_dim_array;
48229 			}
48230 		}
48231 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
48232 			container = GET_OP1_UNDEF_CV(container, BP_VAR_R);
48233 		}
48234 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
48235 			offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
48236 		}
48237 		if (EXPECTED(Z_TYPE_P(container) == IS_OBJECT)) {
48238 			if (UNEXPECTED(Z_OBJ_HT_P(container)->unset_dimension == NULL)) {
48239 				zend_throw_error(NULL, "Cannot use object as array");
48240 			} else {
48241 				Z_OBJ_HT_P(container)->unset_dimension(container, offset);
48242 			}
48243 		} else if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_STRING)) {
48244 			zend_throw_error(NULL, "Cannot unset string offsets");
48245 		}
48246 	} while (0);
48247 
48248 	zval_ptr_dtor_nogc(free_op2);
48249 
48250 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48251 }
48252 
48253 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48254 {
48255 	USE_OPLINE
48256 	zend_free_op free_op2;
48257 	zval *container;
48258 	zval *offset;
48259 
48260 	SAVE_OPLINE();
48261 	container = _get_zval_ptr_cv_BP_VAR_UNSET(opline->op1.var EXECUTE_DATA_CC);
48262 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
48263 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
48264 	}
48265 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
48266 
48267 	do {
48268 		if (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
48269 			if (Z_ISREF_P(container)) {
48270 				container = Z_REFVAL_P(container);
48271 				if (Z_TYPE_P(container) != IS_OBJECT) {
48272 					break;
48273 				}
48274 			} else {
48275 				break;
48276 			}
48277 		}
48278 		if (Z_OBJ_HT_P(container)->unset_property) {
48279 			Z_OBJ_HT_P(container)->unset_property(container, offset, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
48280 		} else {
48281 			zend_string *property_name = zval_get_string(offset);
48282 			zend_error(E_NOTICE, "Trying to unset property '%s' of non-object", ZSTR_VAL(property_name));
48283 			zend_string_release(property_name);
48284 		}
48285 	} while (0);
48286 
48287 	zval_ptr_dtor_nogc(free_op2);
48288 
48289 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48290 }
48291 
48292 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48293 {
48294 	USE_OPLINE
48295 	zend_free_op free_op2;
48296 	zval *container;
48297 	int result;
48298 	zend_ulong hval;
48299 	zval *offset;
48300 
48301 	SAVE_OPLINE();
48302 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
48303 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
48304 
48305 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48306 		HashTable *ht;
48307 		zval *value;
48308 		zend_string *str;
48309 
48310 isset_dim_obj_array:
48311 		ht = Z_ARRVAL_P(container);
48312 isset_again:
48313 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
48314 			str = Z_STR_P(offset);
48315 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
48316 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
48317 					goto num_index_prop;
48318 				}
48319 			}
48320 str_index_prop:
48321 			value = zend_hash_find_ind(ht, str);
48322 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
48323 			hval = Z_LVAL_P(offset);
48324 num_index_prop:
48325 			value = zend_hash_index_find(ht, hval);
48326 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
48327 			offset = Z_REFVAL_P(offset);
48328 			goto isset_again;
48329 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
48330 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
48331 			goto num_index_prop;
48332 		} else if (Z_TYPE_P(offset) == IS_NULL) {
48333 			str = ZSTR_EMPTY_ALLOC();
48334 			goto str_index_prop;
48335 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
48336 			hval = 0;
48337 			goto num_index_prop;
48338 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
48339 			hval = 1;
48340 			goto num_index_prop;
48341 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
48342 			hval = Z_RES_HANDLE_P(offset);
48343 			goto num_index_prop;
48344 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
48345 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
48346 			str = ZSTR_EMPTY_ALLOC();
48347 			goto str_index_prop;
48348 		} else {
48349 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
48350 			goto isset_not_found;
48351 		}
48352 
48353 		if (opline->extended_value & ZEND_ISSET) {
48354 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
48355 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
48356 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
48357 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
48358 			result = (value == NULL || !i_zend_is_true(value));
48359 		}
48360 		goto isset_dim_obj_exit;
48361 	} else if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
48362 		container = Z_REFVAL_P(container);
48363 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48364 			goto isset_dim_obj_array;
48365 		}
48366 	}
48367 
48368 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
48369 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
48370 	}
48371 
48372 	if ((IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
48373 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
48374 			result =
48375 				((opline->extended_value & ZEND_ISSET) == 0) ^
48376 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
48377 		} else {
48378 			zend_error(E_NOTICE, "Trying to check element of non-array");
48379 			goto isset_not_found;
48380 		}
48381 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
48382 		zend_long lval;
48383 
48384 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
48385 			lval = Z_LVAL_P(offset);
48386 isset_str_offset:
48387 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
48388 				lval += (zend_long)Z_STRLEN_P(container);
48389 			}
48390 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
48391 				if (opline->extended_value & ZEND_ISSET) {
48392 					result = 1;
48393 				} else {
48394 					result = (Z_STRVAL_P(container)[lval] == '0');
48395 				}
48396 			} else {
48397 				goto isset_not_found;
48398 			}
48399 		} else {
48400 			if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR)) {
48401 				ZVAL_DEREF(offset);
48402 			}
48403 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
48404 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
48405 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
48406 				lval = zval_get_long(offset);
48407 				goto isset_str_offset;
48408 			}
48409 			goto isset_not_found;
48410 		}
48411 	} else {
48412 isset_not_found:
48413 		result = ((opline->extended_value & ZEND_ISSET) == 0);
48414 	}
48415 
48416 isset_dim_obj_exit:
48417 	zval_ptr_dtor_nogc(free_op2);
48418 
48419 	ZEND_VM_SMART_BRANCH(result, 1);
48420 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
48421 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48422 }
48423 
48424 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48425 {
48426 	USE_OPLINE
48427 	zend_free_op free_op2;
48428 	zval *container;
48429 	int result;
48430 	zval *offset;
48431 
48432 	SAVE_OPLINE();
48433 	container = _get_zval_ptr_cv_BP_VAR_IS(opline->op1.var EXECUTE_DATA_CC);
48434 
48435 	if (IS_CV == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
48436 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
48437 	}
48438 
48439 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
48440 
48441 	if (IS_CV == IS_CONST ||
48442 	    (IS_CV != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
48443 		if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
48444 			container = Z_REFVAL_P(container);
48445 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
48446 				goto isset_no_object;
48447 			}
48448 		} else {
48449 			goto isset_no_object;
48450 		}
48451 	}
48452 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
48453 		zend_string *property_name = zval_get_string(offset);
48454 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
48455 		zend_string_release(property_name);
48456 isset_no_object:
48457 		result = ((opline->extended_value & ZEND_ISSET) == 0);
48458 	} else {
48459 		result =
48460 			((opline->extended_value & ZEND_ISSET) == 0) ^
48461 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
48462 	}
48463 
48464 	zval_ptr_dtor_nogc(free_op2);
48465 
48466 	ZEND_VM_SMART_BRANCH(result, 1);
48467 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
48468 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48469 }
48470 
48471 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48472 {
48473 	USE_OPLINE
48474 	zend_free_op free_op2;
48475 	zval *container, *dim, *value;
48476 	zend_long offset;
48477 
48478 	container = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
48479 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
48480 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48481 fetch_dim_r_index_array:
48482 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
48483 			offset = Z_LVAL_P(dim);
48484 		} else {
48485 			offset = zval_get_long(dim);
48486 		}
48487 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
48488 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
48489 		if (IS_CV & (IS_TMP_VAR|IS_VAR)) {
48490 			SAVE_OPLINE();
48491 
48492 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48493 		} else {
48494 			ZEND_VM_NEXT_OPCODE();
48495 		}
48496 	} else if (IS_CV != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
48497 		container = Z_REFVAL_P(container);
48498 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
48499 			goto fetch_dim_r_index_array;
48500 		} else {
48501 			goto fetch_dim_r_index_slow;
48502 		}
48503 	} else {
48504 fetch_dim_r_index_slow:
48505 		SAVE_OPLINE();
48506 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
48507 
48508 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48509 	}
48510 
48511 fetch_dim_r_index_undef:
48512 	ZVAL_NULL(EX_VAR(opline->result.var));
48513 	SAVE_OPLINE();
48514 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
48515 
48516 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48517 }
48518 
48519 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48520 {
48521 	USE_OPLINE
48522 	zend_free_op free_op1;
48523 	zval *op1;
48524 
48525 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48526 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
48527 		ZVAL_LONG(EX_VAR(opline->result.var), ~Z_LVAL_P(op1));
48528 		ZEND_VM_NEXT_OPCODE();
48529 	}
48530 
48531 	SAVE_OPLINE();
48532 	bitwise_not_function(EX_VAR(opline->result.var),
48533 		_get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC));
48534 	zval_ptr_dtor_nogc(free_op1);
48535 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48536 }
48537 
48538 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48539 {
48540 	USE_OPLINE
48541 	zval *val;
48542 	zend_free_op free_op1;
48543 
48544 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48545 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48546 		ZVAL_FALSE(EX_VAR(opline->result.var));
48547 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48548 		/* The result and op1 can be the same cv zval */
48549 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
48550 		ZVAL_TRUE(EX_VAR(opline->result.var));
48551 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
48552 			SAVE_OPLINE();
48553 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
48554 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48555 		}
48556 	} else {
48557 		SAVE_OPLINE();
48558 		ZVAL_BOOL(EX_VAR(opline->result.var), !i_zend_is_true(val));
48559 		zval_ptr_dtor_nogc(free_op1);
48560 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48561 	}
48562 	ZEND_VM_NEXT_OPCODE();
48563 }
48564 
48565 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48566 {
48567 	USE_OPLINE
48568 	zend_free_op free_op1;
48569 	zval *z;
48570 
48571 	SAVE_OPLINE();
48572 	z = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48573 
48574 	if (Z_TYPE_P(z) == IS_STRING) {
48575 		zend_string *str = Z_STR_P(z);
48576 
48577 		if (ZSTR_LEN(str) != 0) {
48578 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
48579 		}
48580 	} else {
48581 		zend_string *str = _zval_get_string_func(z);
48582 
48583 		if (ZSTR_LEN(str) != 0) {
48584 			zend_write(ZSTR_VAL(str), ZSTR_LEN(str));
48585 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(z) == IS_UNDEF)) {
48586 			GET_OP1_UNDEF_CV(z, BP_VAR_R);
48587 		}
48588 		zend_string_release(str);
48589 	}
48590 
48591 	zval_ptr_dtor_nogc(free_op1);
48592 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48593 }
48594 
48595 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48596 {
48597 	USE_OPLINE
48598 	zend_free_op free_op1;
48599 	zval *val;
48600 
48601 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48602 
48603 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48604 		ZEND_VM_SET_NEXT_OPCODE(opline + 1);
48605 		ZEND_VM_CONTINUE();
48606 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48607 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
48608 			SAVE_OPLINE();
48609 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
48610 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
48611 		} else {
48612 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
48613 			ZEND_VM_CONTINUE();
48614 		}
48615 	}
48616 
48617 	SAVE_OPLINE();
48618 	if (i_zend_is_true(val)) {
48619 		opline++;
48620 	} else {
48621 		opline = OP_JMP_ADDR(opline, opline->op2);
48622 	}
48623 	zval_ptr_dtor_nogc(free_op1);
48624 	ZEND_VM_JMP(opline);
48625 }
48626 
48627 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48628 {
48629 	USE_OPLINE
48630 	zend_free_op free_op1;
48631 	zval *val;
48632 
48633 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48634 
48635 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48636 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
48637 		ZEND_VM_CONTINUE();
48638 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48639 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
48640 			SAVE_OPLINE();
48641 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
48642 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48643 		} else {
48644 			ZEND_VM_NEXT_OPCODE();
48645 		}
48646 	}
48647 
48648 	SAVE_OPLINE();
48649 	if (i_zend_is_true(val)) {
48650 		opline = OP_JMP_ADDR(opline, opline->op2);
48651 	} else {
48652 		opline++;
48653 	}
48654 	zval_ptr_dtor_nogc(free_op1);
48655 	ZEND_VM_JMP(opline);
48656 }
48657 
48658 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48659 {
48660 	USE_OPLINE
48661 	zend_free_op free_op1;
48662 	zval *val;
48663 
48664 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48665 
48666 	if (EXPECTED(Z_TYPE_INFO_P(val) == IS_TRUE)) {
48667 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
48668 		ZEND_VM_CONTINUE();
48669 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48670 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
48671 			SAVE_OPLINE();
48672 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
48673 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
48674 		} else {
48675 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
48676 			ZEND_VM_CONTINUE();
48677 		}
48678 	}
48679 
48680 	SAVE_OPLINE();
48681 	if (i_zend_is_true(val)) {
48682 		opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value);
48683 	} else {
48684 		opline = OP_JMP_ADDR(opline, opline->op2);
48685 	}
48686 	zval_ptr_dtor_nogc(free_op1);
48687 	ZEND_VM_JMP(opline);
48688 }
48689 
48690 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48691 {
48692 	USE_OPLINE
48693 	zend_free_op free_op1;
48694 	zval *val;
48695 	int ret;
48696 
48697 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48698 
48699 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48700 		ZVAL_TRUE(EX_VAR(opline->result.var));
48701 		ZEND_VM_NEXT_OPCODE();
48702 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48703 		ZVAL_FALSE(EX_VAR(opline->result.var));
48704 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
48705 			SAVE_OPLINE();
48706 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
48707 			ZEND_VM_JMP(OP_JMP_ADDR(opline, opline->op2));
48708 		} else {
48709 			ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
48710 			ZEND_VM_CONTINUE();
48711 		}
48712 	}
48713 
48714 	SAVE_OPLINE();
48715 	ret = i_zend_is_true(val);
48716 	zval_ptr_dtor_nogc(free_op1);
48717 	if (ret) {
48718 		ZVAL_TRUE(EX_VAR(opline->result.var));
48719 		opline++;
48720 	} else {
48721 		ZVAL_FALSE(EX_VAR(opline->result.var));
48722 		opline = OP_JMP_ADDR(opline, opline->op2);
48723 	}
48724 	ZEND_VM_JMP(opline);
48725 }
48726 
48727 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48728 {
48729 	USE_OPLINE
48730 	zend_free_op free_op1;
48731 	zval *val;
48732 	int ret;
48733 
48734 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48735 
48736 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48737 		ZVAL_TRUE(EX_VAR(opline->result.var));
48738 		ZEND_VM_SET_OPCODE(OP_JMP_ADDR(opline, opline->op2));
48739 		ZEND_VM_CONTINUE();
48740 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48741 		ZVAL_FALSE(EX_VAR(opline->result.var));
48742 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(val) == IS_UNDEF)) {
48743 			SAVE_OPLINE();
48744 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
48745 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48746 		} else {
48747 			ZEND_VM_NEXT_OPCODE();
48748 		}
48749 	}
48750 
48751 	SAVE_OPLINE();
48752 	ret = i_zend_is_true(val);
48753 	zval_ptr_dtor_nogc(free_op1);
48754 	if (ret) {
48755 		ZVAL_TRUE(EX_VAR(opline->result.var));
48756 		opline = OP_JMP_ADDR(opline, opline->op2);
48757 	} else {
48758 		ZVAL_FALSE(EX_VAR(opline->result.var));
48759 		opline++;
48760 	}
48761 	ZEND_VM_JMP(opline);
48762 }
48763 
48764 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48765 {
48766 	USE_OPLINE
48767 
48768 	SAVE_OPLINE();
48769 	zval_ptr_dtor_nogc(EX_VAR(opline->op1.var));
48770 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48771 }
48772 
48773 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48774 {
48775 	zval *var;
48776 	USE_OPLINE
48777 
48778 	SAVE_OPLINE();
48779 	var = EX_VAR(opline->op1.var);
48780 	if (Z_TYPE_P(var) != IS_ARRAY && Z_FE_ITER_P(var) != (uint32_t)-1) {
48781 		zend_hash_iterator_del(Z_FE_ITER_P(var));
48782 	}
48783 	zval_ptr_dtor_nogc(var);
48784 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48785 }
48786 
48787 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48788 {
48789 	USE_OPLINE
48790 	zval *value, *arg;
48791 	zend_free_op free_op1;
48792 
48793 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48794 	arg = ZEND_CALL_VAR(EX(call), opline->result.var);
48795 	ZVAL_COPY_VALUE(arg, value);
48796 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
48797 		if (UNEXPECTED(Z_OPT_REFCOUNTED_P(arg))) {
48798 			Z_ADDREF_P(arg);
48799 		}
48800 	}
48801 	ZEND_VM_NEXT_OPCODE();
48802 }
48803 
48804 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48805 {
48806 	USE_OPLINE
48807 	zval *val;
48808 	zend_free_op free_op1;
48809 
48810 	val = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48811 	if (Z_TYPE_INFO_P(val) == IS_TRUE) {
48812 		ZVAL_TRUE(EX_VAR(opline->result.var));
48813 	} else if (EXPECTED(Z_TYPE_INFO_P(val) <= IS_TRUE)) {
48814 		/* The result and op1 can be the same cv zval */
48815 		const uint32_t orig_val_type = Z_TYPE_INFO_P(val);
48816 		ZVAL_FALSE(EX_VAR(opline->result.var));
48817 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(orig_val_type == IS_UNDEF)) {
48818 			SAVE_OPLINE();
48819 			GET_OP1_UNDEF_CV(val, BP_VAR_R);
48820 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48821 		}
48822 	} else {
48823 		SAVE_OPLINE();
48824 		ZVAL_BOOL(EX_VAR(opline->result.var), i_zend_is_true(val));
48825 		zval_ptr_dtor_nogc(free_op1);
48826 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48827 	}
48828 	ZEND_VM_NEXT_OPCODE();
48829 }
48830 
48831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48832 {
48833 	USE_OPLINE
48834 	zend_free_op free_op1;
48835 	zval *obj;
48836 	zend_class_entry *ce, *scope;
48837 	zend_function *clone;
48838 	zend_object_clone_obj_t clone_call;
48839 
48840 	SAVE_OPLINE();
48841 	obj = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48842 
48843 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
48844 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
48845 	}
48846 
48847 	do {
48848 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
48849 		    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(obj) != IS_OBJECT))) {
48850 		    if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(obj)) {
48851 		    	obj = Z_REFVAL_P(obj);
48852 		    	if (EXPECTED(Z_TYPE_P(obj) == IS_OBJECT)) {
48853 		    		break;
48854 				}
48855 			}
48856 			ZVAL_UNDEF(EX_VAR(opline->result.var));
48857 			if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(obj) == IS_UNDEF)) {
48858 				GET_OP1_UNDEF_CV(obj, BP_VAR_R);
48859 				if (UNEXPECTED(EG(exception) != NULL)) {
48860 					HANDLE_EXCEPTION();
48861 				}
48862 			}
48863 			zend_throw_error(NULL, "__clone method called on non-object");
48864 			zval_ptr_dtor_nogc(free_op1);
48865 			HANDLE_EXCEPTION();
48866 		}
48867 	} while (0);
48868 
48869 	ce = Z_OBJCE_P(obj);
48870 	clone = ce->clone;
48871 	clone_call = Z_OBJ_HT_P(obj)->clone_obj;
48872 	if (UNEXPECTED(clone_call == NULL)) {
48873 		zend_throw_error(NULL, "Trying to clone an uncloneable object of class %s", ZSTR_VAL(ce->name));
48874 		zval_ptr_dtor_nogc(free_op1);
48875 		ZVAL_UNDEF(EX_VAR(opline->result.var));
48876 		HANDLE_EXCEPTION();
48877 	}
48878 
48879 	if (clone) {
48880 		if (clone->op_array.fn_flags & ZEND_ACC_PRIVATE) {
48881 			/* Ensure that if we're calling a private function, we're allowed to do so.
48882 			 */
48883 			scope = EX(func)->op_array.scope;
48884 			if (!zend_check_private(clone, scope, clone->common.function_name)) {
48885 				zend_throw_error(NULL, "Call to private %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
48886 				zval_ptr_dtor_nogc(free_op1);
48887 				ZVAL_UNDEF(EX_VAR(opline->result.var));
48888 				HANDLE_EXCEPTION();
48889 			}
48890 		} else if ((clone->common.fn_flags & ZEND_ACC_PROTECTED)) {
48891 			/* Ensure that if we're calling a protected function, we're allowed to do so.
48892 			 */
48893 			scope = EX(func)->op_array.scope;
48894 			if (UNEXPECTED(!zend_check_protected(zend_get_function_root_class(clone), scope))) {
48895 				zend_throw_error(NULL, "Call to protected %s::__clone() from context '%s'", ZSTR_VAL(clone->common.scope->name), scope ? ZSTR_VAL(scope->name) : "");
48896 				zval_ptr_dtor_nogc(free_op1);
48897 				ZVAL_UNDEF(EX_VAR(opline->result.var));
48898 				HANDLE_EXCEPTION();
48899 			}
48900 		}
48901 	}
48902 
48903 	ZVAL_OBJ(EX_VAR(opline->result.var), clone_call(obj));
48904 
48905 	zval_ptr_dtor_nogc(free_op1);
48906 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
48907 }
48908 
48909 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48910 {
48911 	USE_OPLINE
48912 	zend_op_array *new_op_array;
48913 	zend_free_op free_op1;
48914 	zval *inc_filename;
48915 
48916 	SAVE_OPLINE();
48917 	inc_filename = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48918 	new_op_array = zend_include_or_eval(inc_filename, opline->extended_value);
48919 	zval_ptr_dtor_nogc(free_op1);
48920 	if (UNEXPECTED(EG(exception) != NULL)) {
48921 		if (new_op_array != ZEND_FAKE_OP_ARRAY && new_op_array != NULL) {
48922 			destroy_op_array(new_op_array);
48923 			efree_size(new_op_array, sizeof(zend_op_array));
48924 		}
48925 		UNDEF_RESULT();
48926 		HANDLE_EXCEPTION();
48927 	} else if (new_op_array == ZEND_FAKE_OP_ARRAY) {
48928 		if (RETURN_VALUE_USED(opline)) {
48929 			ZVAL_TRUE(EX_VAR(opline->result.var));
48930 		}
48931 	} else if (EXPECTED(new_op_array != NULL)) {
48932 		zval *return_value = NULL;
48933 		zend_execute_data *call;
48934 
48935 		if (RETURN_VALUE_USED(opline)) {
48936 			return_value = EX_VAR(opline->result.var);
48937 			ZVAL_NULL(return_value);
48938 		}
48939 
48940 		new_op_array->scope = EX(func)->op_array.scope;
48941 
48942 		call = zend_vm_stack_push_call_frame(ZEND_CALL_NESTED_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
48943 			(zend_function*)new_op_array, 0,
48944 			Z_TYPE(EX(This)) != IS_OBJECT ? Z_CE(EX(This)) : NULL,
48945 			Z_TYPE(EX(This)) == IS_OBJECT ? Z_OBJ(EX(This)) : NULL);
48946 
48947 		if (EX_CALL_INFO() & ZEND_CALL_HAS_SYMBOL_TABLE) {
48948 			call->symbol_table = EX(symbol_table);
48949 		} else {
48950 			call->symbol_table = zend_rebuild_symbol_table();
48951 		}
48952 
48953 		call->prev_execute_data = execute_data;
48954 		i_init_code_execute_data(call, new_op_array, return_value);
48955 		if (EXPECTED(zend_execute_ex == execute_ex)) {
48956 			ZEND_VM_ENTER();
48957 		} else {
48958 			ZEND_ADD_CALL_FLAG(call, ZEND_CALL_TOP);
48959 			zend_execute_ex(call);
48960 			zend_vm_stack_free_call_frame(call);
48961 		}
48962 
48963 		destroy_op_array(new_op_array);
48964 		efree_size(new_op_array, sizeof(zend_op_array));
48965 		if (UNEXPECTED(EG(exception) != NULL)) {
48966 			zend_rethrow_exception(execute_data);
48967 			UNDEF_RESULT();
48968 			HANDLE_EXCEPTION();
48969 		}
48970 	} else if (RETURN_VALUE_USED(opline)) {
48971 		ZVAL_FALSE(EX_VAR(opline->result.var));
48972 	}
48973 	ZEND_VM_SET_OPCODE(opline + 1);
48974 	ZEND_VM_CONTINUE();
48975 }
48976 
48977 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_EXIT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
48978 {
48979 	USE_OPLINE
48980 
48981 	SAVE_OPLINE();
48982 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
48983 		zend_free_op free_op1;
48984 		zval *ptr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
48985 
48986 		do {
48987 			if (Z_TYPE_P(ptr) == IS_LONG) {
48988 				EG(exit_status) = Z_LVAL_P(ptr);
48989 			} else {
48990 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(ptr)) {
48991 					ptr = Z_REFVAL_P(ptr);
48992 					if (Z_TYPE_P(ptr) == IS_LONG) {
48993 						EG(exit_status) = Z_LVAL_P(ptr);
48994 						break;
48995 					}
48996 				}
48997 				zend_print_variable(ptr);
48998 			}
48999 		} while (0);
49000 		zval_ptr_dtor_nogc(free_op1);
49001 	}
49002 	zend_bailout();
49003 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
49004 }
49005 
49006 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49007 {
49008 	USE_OPLINE
49009 	zval *value;
49010 	zend_free_op free_op1;
49011 
49012 	value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49013 	if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
49014 		ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
49015 		zval_ptr_dtor_nogc(free_op1);
49016 		ZEND_VM_NEXT_OPCODE();
49017 	} else {
49018 		zend_bool strict;
49019 
49020 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(value) == IS_REFERENCE) {
49021 			value = Z_REFVAL_P(value);
49022 			if (EXPECTED(Z_TYPE_P(value) == IS_STRING)) {
49023 				ZVAL_LONG(EX_VAR(opline->result.var), Z_STRLEN_P(value));
49024 				zval_ptr_dtor_nogc(free_op1);
49025 				ZEND_VM_NEXT_OPCODE();
49026 			}
49027 		}
49028 
49029 		SAVE_OPLINE();
49030 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
49031 			value = GET_OP1_UNDEF_CV(value, BP_VAR_R);
49032 		}
49033 		strict = EX_USES_STRICT_TYPES();
49034 		do {
49035 			if (EXPECTED(!strict)) {
49036 				zend_string *str;
49037 				zval tmp;
49038 
49039 				ZVAL_COPY(&tmp, value);
49040 				if (zend_parse_arg_str_weak(&tmp, &str)) {
49041 					ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
49042 					zval_ptr_dtor(&tmp);
49043 					break;
49044 				}
49045 				zval_ptr_dtor(&tmp);
49046 			}
49047 			zend_internal_type_error(strict, "strlen() expects parameter 1 to be string, %s given", zend_get_type_by_const(Z_TYPE_P(value)));
49048 			ZVAL_NULL(EX_VAR(opline->result.var));
49049 		} while (0);
49050 	}
49051 	zval_ptr_dtor_nogc(free_op1);
49052 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49053 }
49054 
49055 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49056 {
49057 	USE_OPLINE
49058 	zend_free_op free_op1;
49059 	zval *op1, *op2, *result;
49060 
49061 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49062 	op2 = EX_CONSTANT(opline->op2);
49063 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
49064 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49065 			result = EX_VAR(opline->result.var);
49066 			fast_long_add_function(result, op1, op2);
49067 			ZEND_VM_NEXT_OPCODE();
49068 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49069 			result = EX_VAR(opline->result.var);
49070 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
49071 			ZEND_VM_NEXT_OPCODE();
49072 		}
49073 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
49074 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49075 			result = EX_VAR(opline->result.var);
49076 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
49077 			ZEND_VM_NEXT_OPCODE();
49078 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49079 			result = EX_VAR(opline->result.var);
49080 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
49081 			ZEND_VM_NEXT_OPCODE();
49082 		}
49083 	}
49084 
49085 	SAVE_OPLINE();
49086 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49087 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49088 	}
49089 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49090 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49091 	}
49092 	add_function(EX_VAR(opline->result.var), op1, op2);
49093 	zval_ptr_dtor_nogc(free_op1);
49094 
49095 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49096 }
49097 
49098 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49099 {
49100 	USE_OPLINE
49101 	zend_free_op free_op1;
49102 	zval *op1, *op2, *result;
49103 
49104 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49105 	op2 = EX_CONSTANT(opline->op2);
49106 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
49107 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49108 			result = EX_VAR(opline->result.var);
49109 			fast_long_sub_function(result, op1, op2);
49110 			ZEND_VM_NEXT_OPCODE();
49111 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49112 			result = EX_VAR(opline->result.var);
49113 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
49114 			ZEND_VM_NEXT_OPCODE();
49115 		}
49116 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
49117 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49118 			result = EX_VAR(opline->result.var);
49119 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
49120 			ZEND_VM_NEXT_OPCODE();
49121 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49122 			result = EX_VAR(opline->result.var);
49123 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
49124 			ZEND_VM_NEXT_OPCODE();
49125 		}
49126 	}
49127 
49128 	SAVE_OPLINE();
49129 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49130 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49131 	}
49132 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49133 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49134 	}
49135 	sub_function(EX_VAR(opline->result.var), op1, op2);
49136 	zval_ptr_dtor_nogc(free_op1);
49137 
49138 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49139 }
49140 
49141 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49142 {
49143 	USE_OPLINE
49144 	zend_free_op free_op1;
49145 	zval *op1, *op2, *result;
49146 
49147 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49148 	op2 = EX_CONSTANT(opline->op2);
49149 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
49150 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49151 			zend_long overflow;
49152 
49153 			result = EX_VAR(opline->result.var);
49154 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
49155 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
49156 			ZEND_VM_NEXT_OPCODE();
49157 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49158 			result = EX_VAR(opline->result.var);
49159 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
49160 			ZEND_VM_NEXT_OPCODE();
49161 		}
49162 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
49163 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49164 			result = EX_VAR(opline->result.var);
49165 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
49166 			ZEND_VM_NEXT_OPCODE();
49167 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49168 			result = EX_VAR(opline->result.var);
49169 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
49170 			ZEND_VM_NEXT_OPCODE();
49171 		}
49172 	}
49173 
49174 	SAVE_OPLINE();
49175 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49176 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49177 	}
49178 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49179 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49180 	}
49181 	mul_function(EX_VAR(opline->result.var), op1, op2);
49182 	zval_ptr_dtor_nogc(free_op1);
49183 
49184 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49185 }
49186 
49187 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49188 {
49189 	USE_OPLINE
49190 	zend_free_op free_op1;
49191 	zval *op1, *op2;
49192 
49193 	SAVE_OPLINE();
49194 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49195 	op2 = EX_CONSTANT(opline->op2);
49196 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
49197 	zval_ptr_dtor_nogc(free_op1);
49198 
49199 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49200 }
49201 
49202 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49203 {
49204 	USE_OPLINE
49205 	zend_free_op free_op1;
49206 	zval *op1, *op2, *result;
49207 
49208 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49209 	op2 = EX_CONSTANT(opline->op2);
49210 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
49211 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49212 			result = EX_VAR(opline->result.var);
49213 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
49214 				SAVE_OPLINE();
49215 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
49216 				ZVAL_UNDEF(EX_VAR(opline->result.var));
49217 				HANDLE_EXCEPTION();
49218 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
49219 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
49220 				ZVAL_LONG(result, 0);
49221 			} else {
49222 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
49223 			}
49224 			ZEND_VM_NEXT_OPCODE();
49225 		}
49226 	}
49227 
49228 	SAVE_OPLINE();
49229 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49230 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49231 	}
49232 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49233 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49234 	}
49235 	mod_function(EX_VAR(opline->result.var), op1, op2);
49236 	zval_ptr_dtor_nogc(free_op1);
49237 
49238 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49239 }
49240 
49241 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49242 {
49243 	USE_OPLINE
49244 	zend_free_op free_op1;
49245 	zval *op1, *op2;
49246 
49247 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49248 	op2 = EX_CONSTANT(opline->op2);
49249 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
49250 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
49251 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
49252 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
49253 		ZEND_VM_NEXT_OPCODE();
49254 	}
49255 
49256 	SAVE_OPLINE();
49257 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49258 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49259 	}
49260 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49261 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49262 	}
49263 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
49264 	zval_ptr_dtor_nogc(free_op1);
49265 
49266 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49267 }
49268 
49269 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49270 {
49271 	USE_OPLINE
49272 	zend_free_op free_op1;
49273 	zval *op1, *op2;
49274 
49275 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49276 	op2 = EX_CONSTANT(opline->op2);
49277 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
49278 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
49279 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
49280 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
49281 		ZEND_VM_NEXT_OPCODE();
49282 	}
49283 
49284 	SAVE_OPLINE();
49285 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49286 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49287 	}
49288 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49289 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49290 	}
49291 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
49292 	zval_ptr_dtor_nogc(free_op1);
49293 
49294 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49295 }
49296 
49297 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49298 {
49299 	USE_OPLINE
49300 	zend_free_op free_op1;
49301 	zval *op1, *op2;
49302 
49303 	SAVE_OPLINE();
49304 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49305 	op2 = EX_CONSTANT(opline->op2);
49306 	pow_function(EX_VAR(opline->result.var), op1, op2);
49307 	zval_ptr_dtor_nogc(free_op1);
49308 
49309 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49310 }
49311 
49312 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49313 {
49314 	USE_OPLINE
49315 	zend_free_op free_op1;
49316 	zval *op1, *op2;
49317 
49318 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49319 	op2 = EX_CONSTANT(opline->op2);
49320 
49321 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
49322 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
49323 		zend_string *op1_str = Z_STR_P(op1);
49324 		zend_string *op2_str = Z_STR_P(op2);
49325 		zend_string *str;
49326 
49327 		do {
49328 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
49329 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
49330 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
49331 					zval_ptr_dtor_nogc(free_op1);
49332 					break;
49333 				}
49334 			}
49335 			if (IS_CONST != IS_CONST) {
49336 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
49337 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
49338 					zval_ptr_dtor_nogc(free_op1);
49339 					break;
49340 				}
49341 			}
49342 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
49343 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
49344 			    size_t len = ZSTR_LEN(op1_str);
49345 
49346 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
49347 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
49348 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
49349 				break;
49350 			} else {
49351 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
49352 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
49353 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
49354 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
49355 			}
49356 			zval_ptr_dtor_nogc(free_op1);
49357 		} while (0);
49358 
49359 		ZEND_VM_NEXT_OPCODE();
49360 	} else {
49361 		SAVE_OPLINE();
49362 
49363 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
49364 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49365 		}
49366 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
49367 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49368 		}
49369 		concat_function(EX_VAR(opline->result.var), op1, op2);
49370 		zval_ptr_dtor_nogc(free_op1);
49371 
49372 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49373 	}
49374 }
49375 
49376 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49377 {
49378 	USE_OPLINE
49379 	zend_free_op free_op1;
49380 	zval *op1, *op2, *result;
49381 
49382 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49383 	op2 = EX_CONSTANT(opline->op2);
49384 	do {
49385 		int result;
49386 
49387 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
49388 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
49389 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
49390 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
49391 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
49392 			} else {
49393 				break;
49394 			}
49395 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
49396 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
49397 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
49398 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
49399 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
49400 			} else {
49401 				break;
49402 			}
49403 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
49404 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
49405 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
49406 					result = 1;
49407 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
49408 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
49409 						result = 0;
49410 					} else {
49411 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
49412 					}
49413 				} else {
49414 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
49415 				}
49416 				zval_ptr_dtor_nogc(free_op1);
49417 
49418 			} else {
49419 				break;
49420 			}
49421 		} else {
49422 			break;
49423 		}
49424 		ZEND_VM_SMART_BRANCH(result, 0);
49425 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
49426 		ZEND_VM_NEXT_OPCODE();
49427 	} while (0);
49428 
49429 	SAVE_OPLINE();
49430 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
49431 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49432 	}
49433 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
49434 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49435 	}
49436 	result = EX_VAR(opline->result.var);
49437 	compare_function(result, op1, op2);
49438 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
49439 	zval_ptr_dtor_nogc(free_op1);
49440 
49441 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49442 }
49443 
49444 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49445 {
49446 	USE_OPLINE
49447 	zend_free_op free_op1;
49448 	zval *op1, *op2, *result;
49449 
49450 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49451 	op2 = EX_CONSTANT(opline->op2);
49452 	do {
49453 		int result;
49454 
49455 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
49456 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
49457 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
49458 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
49459 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
49460 			} else {
49461 				break;
49462 			}
49463 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
49464 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
49465 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
49466 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
49467 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
49468 			} else {
49469 				break;
49470 			}
49471 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
49472 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
49473 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
49474 					result = 0;
49475 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
49476 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
49477 						result = 1;
49478 					} else {
49479 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
49480 					}
49481 				} else {
49482 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
49483 				}
49484 				zval_ptr_dtor_nogc(free_op1);
49485 
49486 			} else {
49487 				break;
49488 			}
49489 		} else {
49490 			break;
49491 		}
49492 		ZEND_VM_SMART_BRANCH(result, 0);
49493 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
49494 		ZEND_VM_NEXT_OPCODE();
49495 	} while (0);
49496 
49497 	SAVE_OPLINE();
49498 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
49499 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49500 	}
49501 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
49502 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49503 	}
49504 	result = EX_VAR(opline->result.var);
49505 	compare_function(result, op1, op2);
49506 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
49507 	zval_ptr_dtor_nogc(free_op1);
49508 
49509 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49510 }
49511 
49512 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49513 {
49514 	USE_OPLINE
49515 	zend_free_op free_op1;
49516 	zval *op1, *op2, *result;
49517 
49518 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49519 	op2 = EX_CONSTANT(opline->op2);
49520 	do {
49521 		int result;
49522 
49523 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
49524 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49525 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
49526 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49527 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
49528 			} else {
49529 				break;
49530 			}
49531 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
49532 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49533 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
49534 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49535 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
49536 			} else {
49537 				break;
49538 			}
49539 		} else {
49540 			break;
49541 		}
49542 		ZEND_VM_SMART_BRANCH(result, 0);
49543 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
49544 		ZEND_VM_NEXT_OPCODE();
49545 	} while (0);
49546 
49547 	SAVE_OPLINE();
49548 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49549 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49550 	}
49551 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49552 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49553 	}
49554 	result = EX_VAR(opline->result.var);
49555 	compare_function(result, op1, op2);
49556 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
49557 	zval_ptr_dtor_nogc(free_op1);
49558 
49559 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49560 }
49561 
49562 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49563 {
49564 	USE_OPLINE
49565 	zend_free_op free_op1;
49566 	zval *op1, *op2, *result;
49567 
49568 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49569 	op2 = EX_CONSTANT(opline->op2);
49570 	do {
49571 		int result;
49572 
49573 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
49574 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49575 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
49576 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49577 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
49578 			} else {
49579 				break;
49580 			}
49581 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
49582 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
49583 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
49584 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49585 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
49586 			} else {
49587 				break;
49588 			}
49589 		} else {
49590 			break;
49591 		}
49592 		ZEND_VM_SMART_BRANCH(result, 0);
49593 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
49594 		ZEND_VM_NEXT_OPCODE();
49595 	} while (0);
49596 
49597 	SAVE_OPLINE();
49598 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49599 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49600 	}
49601 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49602 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49603 	}
49604 	result = EX_VAR(opline->result.var);
49605 	compare_function(result, op1, op2);
49606 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
49607 	zval_ptr_dtor_nogc(free_op1);
49608 
49609 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49610 }
49611 
49612 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49613 {
49614 	USE_OPLINE
49615 	zend_free_op free_op1;
49616 	zval *op1, *op2;
49617 
49618 	SAVE_OPLINE();
49619 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49620 	op2 = EX_CONSTANT(opline->op2);
49621 	compare_function(EX_VAR(opline->result.var), op1, op2);
49622 	zval_ptr_dtor_nogc(free_op1);
49623 
49624 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49625 }
49626 
49627 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49628 {
49629 	USE_OPLINE
49630 	zend_free_op free_op1;
49631 	zval *op1, *op2;
49632 
49633 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49634 	op2 = EX_CONSTANT(opline->op2);
49635 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
49636 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49637 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
49638 		ZEND_VM_NEXT_OPCODE();
49639 	}
49640 
49641 	SAVE_OPLINE();
49642 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49643 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49644 	}
49645 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49646 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49647 	}
49648 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
49649 	zval_ptr_dtor_nogc(free_op1);
49650 
49651 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49652 }
49653 
49654 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49655 {
49656 	USE_OPLINE
49657 	zend_free_op free_op1;
49658 	zval *op1, *op2;
49659 
49660 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49661 	op2 = EX_CONSTANT(opline->op2);
49662 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
49663 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49664 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
49665 		ZEND_VM_NEXT_OPCODE();
49666 	}
49667 
49668 	SAVE_OPLINE();
49669 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49670 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49671 	}
49672 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49673 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49674 	}
49675 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
49676 	zval_ptr_dtor_nogc(free_op1);
49677 
49678 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49679 }
49680 
49681 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49682 {
49683 	USE_OPLINE
49684 	zend_free_op free_op1;
49685 	zval *op1, *op2;
49686 
49687 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49688 	op2 = EX_CONSTANT(opline->op2);
49689 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
49690 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
49691 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
49692 		ZEND_VM_NEXT_OPCODE();
49693 	}
49694 
49695 	SAVE_OPLINE();
49696 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
49697 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49698 	}
49699 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
49700 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49701 	}
49702 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
49703 	zval_ptr_dtor_nogc(free_op1);
49704 
49705 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49706 }
49707 
49708 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49709 {
49710 	USE_OPLINE
49711 	zend_free_op free_op1;
49712 	zval *op1, *op2;
49713 
49714 	SAVE_OPLINE();
49715 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49716 	op2 = EX_CONSTANT(opline->op2);
49717 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
49718 	zval_ptr_dtor_nogc(free_op1);
49719 
49720 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49721 }
49722 
49723 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(int type ZEND_OPCODE_HANDLER_ARGS_DC)
49724 {
49725 	USE_OPLINE
49726 	zend_free_op free_op1;
49727 	zval *varname;
49728 	zval *retval;
49729 
49730 	SAVE_OPLINE();
49731 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49732 
49733 	retval = zend_fetch_static_property_address(varname, (IS_TMP_VAR|IS_VAR), opline->op2, IS_CONST, type EXECUTE_DATA_CC);
49734 
49735 	if (UNEXPECTED(retval == NULL)) {
49736 		if (EG(exception)) {
49737 			zval_ptr_dtor_nogc(free_op1);
49738 			ZVAL_UNDEF(EX_VAR(opline->result.var));
49739 			HANDLE_EXCEPTION();
49740 		} else {
49741 			ZEND_ASSERT(type == BP_VAR_IS);
49742 			retval = &EG(uninitialized_zval);
49743 		}
49744 	}
49745 
49746 	zval_ptr_dtor_nogc(free_op1);
49747 
49748 	if (type == BP_VAR_R || type == BP_VAR_IS) {
49749 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
49750 	} else {
49751 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
49752 	}
49753 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49754 }
49755 
49756 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49757 {
49758 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49759 }
49760 
49761 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49762 {
49763 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49764 }
49765 
49766 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49767 {
49768 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49769 }
49770 
49771 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49772 {
49773 	USE_OPLINE
49774 
49775 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
49776 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49777 	} else {
49778 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49779 	}
49780 }
49781 
49782 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49783 {
49784 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49785 }
49786 
49787 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49788 {
49789 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_CONST(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
49790 }
49791 
49792 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49793 {
49794 	USE_OPLINE
49795 	zend_free_op free_op1;
49796 	zval *container, *dim, *value, *result;
49797 
49798 	SAVE_OPLINE();
49799 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49800 	dim = EX_CONSTANT(opline->op2);
49801 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
49802 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
49803 fetch_dim_r_array:
49804 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CONST, BP_VAR_R EXECUTE_DATA_CC);
49805 			result = EX_VAR(opline->result.var);
49806 			ZVAL_COPY_UNREF(result, value);
49807 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
49808 			container = Z_REFVAL_P(container);
49809 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
49810 				goto fetch_dim_r_array;
49811 			} else {
49812 				goto fetch_dim_r_slow;
49813 			}
49814 		} else {
49815 fetch_dim_r_slow:
49816 			result = EX_VAR(opline->result.var);
49817 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
49818 		}
49819 	} else {
49820 		result = EX_VAR(opline->result.var);
49821 		zend_fetch_dimension_address_read_R(result, container, dim, IS_CONST EXECUTE_DATA_CC);
49822 	}
49823 
49824 	zval_ptr_dtor_nogc(free_op1);
49825 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49826 }
49827 
49828 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49829 {
49830 	USE_OPLINE
49831 	zend_free_op free_op1;
49832 	zval *container;
49833 
49834 	SAVE_OPLINE();
49835 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49836 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2), IS_CONST EXECUTE_DATA_CC);
49837 
49838 	zval_ptr_dtor_nogc(free_op1);
49839 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49840 }
49841 
49842 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49843 {
49844 	USE_OPLINE
49845 	zend_free_op free_op1;
49846 	zval *container;
49847 
49848 	zval *offset;
49849 
49850 	SAVE_OPLINE();
49851 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49852 
49853 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
49854 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
49855 	}
49856 
49857 	offset  = EX_CONSTANT(opline->op2);
49858 
49859 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
49860 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
49861 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
49862 			container = Z_REFVAL_P(container);
49863 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
49864 				goto fetch_obj_is_no_object;
49865 			}
49866 		} else {
49867 			goto fetch_obj_is_no_object;
49868 		}
49869 	}
49870 
49871 	/* here we are sure we are dealing with an object */
49872 	do {
49873 		zend_object *zobj = Z_OBJ_P(container);
49874 		zval *retval;
49875 
49876 		if (IS_CONST == IS_CONST &&
49877 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
49878 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
49879 
49880 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
49881 				retval = OBJ_PROP(zobj, prop_offset);
49882 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
49883 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
49884 					break;
49885 				}
49886 			} else if (EXPECTED(zobj->properties != NULL)) {
49887 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
49888 				if (EXPECTED(retval)) {
49889 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
49890 					break;
49891 				}
49892 			}
49893 		}
49894 
49895 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
49896 fetch_obj_is_no_object:
49897 			ZVAL_NULL(EX_VAR(opline->result.var));
49898 		} else {
49899 
49900 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
49901 
49902 			if (retval != EX_VAR(opline->result.var)) {
49903 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
49904 			}
49905 		}
49906 	} while (0);
49907 
49908 	zval_ptr_dtor_nogc(free_op1);
49909 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49910 }
49911 
49912 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49913 {
49914 	USE_OPLINE
49915 	zend_free_op free_op1;
49916 	zval *container;
49917 
49918 	SAVE_OPLINE();
49919 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49920 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, EX_CONSTANT(opline->op2) EXECUTE_DATA_CC);
49921 
49922 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
49923 }
49924 
49925 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
49926 {
49927 	USE_OPLINE
49928 	zend_free_op free_op1;
49929 	zval *op1, *op2;
49930 	zend_string *op1_str, *op2_str, *str;
49931 
49932 
49933 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
49934 	op2 = EX_CONSTANT(opline->op2);
49935 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
49936 	    (IS_CONST == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
49937 		zend_string *op1_str = Z_STR_P(op1);
49938 		zend_string *op2_str = Z_STR_P(op2);
49939 		zend_string *str;
49940 
49941 		do {
49942 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
49943 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
49944 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
49945 					zval_ptr_dtor_nogc(free_op1);
49946 					break;
49947 				}
49948 			}
49949 			if (IS_CONST != IS_CONST) {
49950 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
49951 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
49952 					zval_ptr_dtor_nogc(free_op1);
49953 					break;
49954 				}
49955 			}
49956 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
49957 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
49958 			    size_t len = ZSTR_LEN(op1_str);
49959 
49960 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
49961 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
49962 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
49963 				break;
49964 			} else {
49965 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
49966 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
49967 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
49968 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
49969 			}
49970 			zval_ptr_dtor_nogc(free_op1);
49971 		} while (0);
49972 
49973 		ZEND_VM_NEXT_OPCODE();
49974 	}
49975 
49976 	SAVE_OPLINE();
49977 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
49978 		op1_str = Z_STR_P(op1);
49979 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
49980 		op1_str = zend_string_copy(Z_STR_P(op1));
49981 	} else {
49982 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
49983 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
49984 		}
49985 		op1_str = _zval_get_string_func(op1);
49986 	}
49987 	if (IS_CONST == IS_CONST) {
49988 		op2_str = Z_STR_P(op2);
49989 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
49990 		op2_str = zend_string_copy(Z_STR_P(op2));
49991 	} else {
49992 		if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
49993 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
49994 		}
49995 		op2_str = _zval_get_string_func(op2);
49996 	}
49997 	do {
49998 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
49999 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
50000 				if (IS_CONST == IS_CONST) {
50001 					zend_string_addref(op2_str);
50002 				}
50003 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
50004 				zend_string_release(op1_str);
50005 				break;
50006 			}
50007 		}
50008 		if (IS_CONST != IS_CONST) {
50009 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
50010 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
50011 					zend_string_addref(op1_str);
50012 				}
50013 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
50014 				zend_string_release(op2_str);
50015 				break;
50016 			}
50017 		}
50018 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
50019 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
50020 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
50021 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
50022 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
50023 			zend_string_release(op1_str);
50024 		}
50025 		if (IS_CONST != IS_CONST) {
50026 			zend_string_release(op2_str);
50027 		}
50028 	} while (0);
50029 	zval_ptr_dtor_nogc(free_op1);
50030 
50031 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50032 }
50033 
50034 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50035 {
50036 	USE_OPLINE
50037 	zval *function_name;
50038 	zend_free_op free_op1;
50039 	zval *object;
50040 	zend_function *fbc;
50041 	zend_class_entry *called_scope;
50042 	zend_object *obj;
50043 	zend_execute_data *call;
50044 	uint32_t call_info;
50045 
50046 	SAVE_OPLINE();
50047 
50048 	object = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50049 
50050 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
50051 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
50052 	}
50053 
50054 	function_name = EX_CONSTANT(opline->op2);
50055 
50056 	if (IS_CONST != IS_CONST &&
50057 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
50058 		do {
50059 			if ((IS_CONST & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
50060 				function_name = Z_REFVAL_P(function_name);
50061 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
50062 					break;
50063 				}
50064 			} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
50065 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
50066 				if (UNEXPECTED(EG(exception) != NULL)) {
50067 					zval_ptr_dtor_nogc(free_op1);
50068 					HANDLE_EXCEPTION();
50069 				}
50070 			}
50071 			zend_throw_error(NULL, "Method name must be a string");
50072 
50073 			zval_ptr_dtor_nogc(free_op1);
50074 			HANDLE_EXCEPTION();
50075 		} while (0);
50076 	}
50077 
50078 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
50079 		do {
50080 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
50081 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
50082 					object = Z_REFVAL_P(object);
50083 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
50084 						break;
50085 					}
50086 				}
50087 				if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
50088 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
50089 					if (UNEXPECTED(EG(exception) != NULL)) {
50090 
50091 						HANDLE_EXCEPTION();
50092 					}
50093 				}
50094 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
50095 
50096 				zval_ptr_dtor_nogc(free_op1);
50097 				HANDLE_EXCEPTION();
50098 			}
50099 		} while (0);
50100 	}
50101 
50102 	obj = Z_OBJ_P(object);
50103 	called_scope = obj->ce;
50104 
50105 	if (IS_CONST == IS_CONST &&
50106 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
50107 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
50108 	} else {
50109 	    zend_object *orig_obj = obj;
50110 
50111 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
50112 			zend_throw_error(NULL, "Object does not support method calls");
50113 
50114 			zval_ptr_dtor_nogc(free_op1);
50115 			HANDLE_EXCEPTION();
50116 		}
50117 
50118 		/* First, locate the function. */
50119 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CONST == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
50120 		if (UNEXPECTED(fbc == NULL)) {
50121 			if (EXPECTED(!EG(exception))) {
50122 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
50123 			}
50124 
50125 			zval_ptr_dtor_nogc(free_op1);
50126 			HANDLE_EXCEPTION();
50127 		}
50128 		if (IS_CONST == IS_CONST &&
50129 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
50130 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
50131 		    EXPECTED(obj == orig_obj)) {
50132 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
50133 		}
50134 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
50135 			init_func_run_time_cache(&fbc->op_array);
50136 		}
50137 	}
50138 
50139 	call_info = ZEND_CALL_NESTED_FUNCTION;
50140 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
50141 		obj = NULL;
50142 	} else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) {
50143 		/* CV may be changed indirectly (e.g. when it's a reference) */
50144 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
50145 		GC_REFCOUNT(obj)++; /* For $this pointer */
50146 	}
50147 
50148 	zval_ptr_dtor_nogc(free_op1);
50149 
50150 	if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
50151 		HANDLE_EXCEPTION();
50152 	}
50153 
50154 	call = zend_vm_stack_push_call_frame(call_info,
50155 		fbc, opline->extended_value, called_scope, obj);
50156 	call->prev_execute_data = EX(call);
50157 	EX(call) = call;
50158 
50159 	ZEND_VM_NEXT_OPCODE();
50160 }
50161 
50162 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50163 {
50164 	USE_OPLINE
50165 	zend_free_op free_op1;
50166 	zval *op1, *op2, *result;
50167 
50168 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50169 	op2 = EX_CONSTANT(opline->op2);
50170 	do {
50171 		int result;
50172 
50173 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
50174 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
50175 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
50176 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
50177 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
50178 			} else {
50179 				break;
50180 			}
50181 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
50182 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
50183 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
50184 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
50185 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
50186 			} else {
50187 				break;
50188 			}
50189 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
50190 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
50191 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
50192 					result = 1;
50193 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
50194 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
50195 						result = 0;
50196 					} else {
50197 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
50198 					}
50199 				} else {
50200 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
50201 				}
50202 
50203 			} else {
50204 				break;
50205 			}
50206 		} else {
50207 			break;
50208 		}
50209 		ZEND_VM_SMART_BRANCH(result, 0);
50210 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
50211 		ZEND_VM_NEXT_OPCODE();
50212 	} while (0);
50213 
50214 	SAVE_OPLINE();
50215 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
50216 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
50217 	}
50218 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
50219 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
50220 	}
50221 	result = EX_VAR(opline->result.var);
50222 	compare_function(result, op1, op2);
50223 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
50224 
50225 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50226 }
50227 
50228 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50229 {
50230 	USE_OPLINE
50231 	zval tmp, *varname;
50232 	zend_class_entry *ce;
50233 	zend_free_op free_op1;
50234 
50235 	SAVE_OPLINE();
50236 
50237 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50238 
50239 	ZVAL_UNDEF(&tmp);
50240 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
50241 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
50242 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
50243 		}
50244 		ZVAL_STR(&tmp, zval_get_string(varname));
50245 		varname = &tmp;
50246 	}
50247 
50248 	if (IS_CONST == IS_CONST) {
50249 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
50250 		if (UNEXPECTED(ce == NULL)) {
50251 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
50252 			if (UNEXPECTED(ce == NULL)) {
50253 				ZEND_ASSERT(EG(exception));
50254 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50255 					zend_string_release(Z_STR(tmp));
50256 				}
50257 				zval_ptr_dtor_nogc(free_op1);
50258 				HANDLE_EXCEPTION();
50259 			}
50260 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
50261 		}
50262 	} else if (IS_CONST == IS_UNUSED) {
50263 		ce = zend_fetch_class(NULL, opline->op2.num);
50264 		if (UNEXPECTED(ce == NULL)) {
50265 			ZEND_ASSERT(EG(exception));
50266 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50267 				zend_string_release(Z_STR(tmp));
50268 			}
50269 			zval_ptr_dtor_nogc(free_op1);
50270 			HANDLE_EXCEPTION();
50271 		}
50272 	} else {
50273 		ce = Z_CE_P(EX_VAR(opline->op2.var));
50274 	}
50275 	zend_std_unset_static_property(ce, Z_STR_P(varname));
50276 
50277 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50278 		zend_string_release(Z_STR(tmp));
50279 	}
50280 	zval_ptr_dtor_nogc(free_op1);
50281 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50282 }
50283 
50284 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50285 {
50286 	USE_OPLINE
50287 	zval *value;
50288 	int result;
50289 	zend_free_op free_op1;
50290 	zval tmp, *varname;
50291 	zend_class_entry *ce;
50292 
50293 	SAVE_OPLINE();
50294 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50295 	ZVAL_UNDEF(&tmp);
50296 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
50297 		ZVAL_STR(&tmp, zval_get_string(varname));
50298 		varname = &tmp;
50299 	}
50300 
50301 	if (IS_CONST == IS_CONST) {
50302 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
50303 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
50304 
50305 			/* check if static properties were destoyed */
50306 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
50307 				value = NULL;
50308 			}
50309 
50310 			goto is_static_prop_return;
50311 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
50312 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
50313 			if (UNEXPECTED(ce == NULL)) {
50314 				ZEND_ASSERT(EG(exception));
50315 				ZVAL_UNDEF(EX_VAR(opline->result.var));
50316 				HANDLE_EXCEPTION();
50317 			}
50318 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
50319 		}
50320 	} else {
50321 		if (IS_CONST == IS_UNUSED) {
50322 			ce = zend_fetch_class(NULL, opline->op2.num);
50323 			if (UNEXPECTED(ce == NULL)) {
50324 				ZEND_ASSERT(EG(exception));
50325 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50326 					zend_string_release(Z_STR(tmp));
50327 				}
50328 				zval_ptr_dtor_nogc(free_op1);
50329 				ZVAL_UNDEF(EX_VAR(opline->result.var));
50330 				HANDLE_EXCEPTION();
50331 			}
50332 		} else {
50333 			ce = Z_CE_P(EX_VAR(opline->op2.var));
50334 		}
50335 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
50336 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
50337 
50338 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
50339 
50340 			/* check if static properties were destoyed */
50341 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
50342 				value = NULL;
50343 			}
50344 
50345 			goto is_static_prop_return;
50346 		}
50347 	}
50348 
50349 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
50350 
50351 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
50352 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
50353 	}
50354 
50355 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50356 		zend_string_release(Z_STR(tmp));
50357 	}
50358 	zval_ptr_dtor_nogc(free_op1);
50359 
50360 is_static_prop_return:
50361 	if (opline->extended_value & ZEND_ISSET) {
50362 		result = value && Z_TYPE_P(value) > IS_NULL &&
50363 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
50364 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
50365 		result = !value || !i_zend_is_true(value);
50366 	}
50367 
50368 	ZEND_VM_SMART_BRANCH(result, 1);
50369 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
50370 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50371 }
50372 
50373 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50374 {
50375 	USE_OPLINE
50376 	zend_free_op free_op1;
50377 	zval *container;
50378 	int result;
50379 	zend_ulong hval;
50380 	zval *offset;
50381 
50382 	SAVE_OPLINE();
50383 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50384 	offset = EX_CONSTANT(opline->op2);
50385 
50386 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
50387 		HashTable *ht;
50388 		zval *value;
50389 		zend_string *str;
50390 
50391 isset_dim_obj_array:
50392 		ht = Z_ARRVAL_P(container);
50393 isset_again:
50394 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
50395 			str = Z_STR_P(offset);
50396 			if (IS_CONST != IS_CONST) {
50397 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
50398 					goto num_index_prop;
50399 				}
50400 			}
50401 str_index_prop:
50402 			value = zend_hash_find_ind(ht, str);
50403 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
50404 			hval = Z_LVAL_P(offset);
50405 num_index_prop:
50406 			value = zend_hash_index_find(ht, hval);
50407 		} else if ((IS_CONST & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
50408 			offset = Z_REFVAL_P(offset);
50409 			goto isset_again;
50410 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
50411 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
50412 			goto num_index_prop;
50413 		} else if (Z_TYPE_P(offset) == IS_NULL) {
50414 			str = ZSTR_EMPTY_ALLOC();
50415 			goto str_index_prop;
50416 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
50417 			hval = 0;
50418 			goto num_index_prop;
50419 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
50420 			hval = 1;
50421 			goto num_index_prop;
50422 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
50423 			hval = Z_RES_HANDLE_P(offset);
50424 			goto num_index_prop;
50425 		} else if (IS_CONST == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
50426 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
50427 			str = ZSTR_EMPTY_ALLOC();
50428 			goto str_index_prop;
50429 		} else {
50430 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
50431 			goto isset_not_found;
50432 		}
50433 
50434 		if (opline->extended_value & ZEND_ISSET) {
50435 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
50436 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
50437 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
50438 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
50439 			result = (value == NULL || !i_zend_is_true(value));
50440 		}
50441 		goto isset_dim_obj_exit;
50442 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
50443 		container = Z_REFVAL_P(container);
50444 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
50445 			goto isset_dim_obj_array;
50446 		}
50447 	}
50448 
50449 	if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
50450 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
50451 	}
50452 
50453 	if (((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
50454 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
50455 			result =
50456 				((opline->extended_value & ZEND_ISSET) == 0) ^
50457 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
50458 		} else {
50459 			zend_error(E_NOTICE, "Trying to check element of non-array");
50460 			goto isset_not_found;
50461 		}
50462 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
50463 		zend_long lval;
50464 
50465 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
50466 			lval = Z_LVAL_P(offset);
50467 isset_str_offset:
50468 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
50469 				lval += (zend_long)Z_STRLEN_P(container);
50470 			}
50471 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
50472 				if (opline->extended_value & ZEND_ISSET) {
50473 					result = 1;
50474 				} else {
50475 					result = (Z_STRVAL_P(container)[lval] == '0');
50476 				}
50477 			} else {
50478 				goto isset_not_found;
50479 			}
50480 		} else {
50481 			if (IS_CONST & (IS_CV|IS_VAR)) {
50482 				ZVAL_DEREF(offset);
50483 			}
50484 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
50485 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
50486 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
50487 				lval = zval_get_long(offset);
50488 				goto isset_str_offset;
50489 			}
50490 			goto isset_not_found;
50491 		}
50492 	} else {
50493 isset_not_found:
50494 		result = ((opline->extended_value & ZEND_ISSET) == 0);
50495 	}
50496 
50497 isset_dim_obj_exit:
50498 
50499 	zval_ptr_dtor_nogc(free_op1);
50500 	ZEND_VM_SMART_BRANCH(result, 1);
50501 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
50502 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50503 }
50504 
50505 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50506 {
50507 	USE_OPLINE
50508 	zend_free_op free_op1;
50509 	zval *container;
50510 	int result;
50511 	zval *offset;
50512 
50513 	SAVE_OPLINE();
50514 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50515 
50516 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
50517 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
50518 	}
50519 
50520 	offset = EX_CONSTANT(opline->op2);
50521 
50522 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
50523 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
50524 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
50525 			container = Z_REFVAL_P(container);
50526 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
50527 				goto isset_no_object;
50528 			}
50529 		} else {
50530 			goto isset_no_object;
50531 		}
50532 	}
50533 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
50534 		zend_string *property_name = zval_get_string(offset);
50535 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
50536 		zend_string_release(property_name);
50537 isset_no_object:
50538 		result = ((opline->extended_value & ZEND_ISSET) == 0);
50539 	} else {
50540 		result =
50541 			((opline->extended_value & ZEND_ISSET) == 0) ^
50542 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CONST == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
50543 	}
50544 
50545 	zval_ptr_dtor_nogc(free_op1);
50546 	ZEND_VM_SMART_BRANCH(result, 1);
50547 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
50548 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50549 }
50550 
50551 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50552 {
50553 	USE_OPLINE
50554 	zend_free_op free_op1;
50555 	zval *expr;
50556 	zend_bool result;
50557 
50558 	SAVE_OPLINE();
50559 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50560 
50561 try_instanceof:
50562 	if (Z_TYPE_P(expr) == IS_OBJECT) {
50563 		zend_class_entry *ce;
50564 
50565 		if (IS_CONST == IS_CONST) {
50566 			ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
50567 			if (UNEXPECTED(ce == NULL)) {
50568 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
50569 				if (EXPECTED(ce)) {
50570 					CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
50571 				}
50572 			}
50573 		} else if (IS_CONST == IS_UNUSED) {
50574 			ce = zend_fetch_class(NULL, opline->op2.num);
50575 			if (UNEXPECTED(ce == NULL)) {
50576 				ZEND_ASSERT(EG(exception));
50577 				zval_ptr_dtor_nogc(free_op1);
50578 				ZVAL_UNDEF(EX_VAR(opline->result.var));
50579 				HANDLE_EXCEPTION();
50580 			}
50581 		} else {
50582 			ce = Z_CE_P(EX_VAR(opline->op2.var));
50583 		}
50584 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
50585 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
50586 		expr = Z_REFVAL_P(expr);
50587 		goto try_instanceof;
50588 	} else {
50589 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
50590 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
50591 		}
50592 		result = 0;
50593 	}
50594 	zval_ptr_dtor_nogc(free_op1);
50595 	ZEND_VM_SMART_BRANCH(result, 1);
50596 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
50597 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50598 }
50599 
50600 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50601 {
50602 	USE_OPLINE
50603 	zend_free_op free_op1;
50604 	zval *op, *jump_zv;
50605 	HashTable *jumptable;
50606 
50607 	op = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50608 	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
50609 
50610 	if (Z_TYPE_P(op) != IS_LONG) {
50611 		ZVAL_DEREF(op);
50612 		if (Z_TYPE_P(op) != IS_LONG) {
50613 			/* Wrong type, fall back to ZEND_CASE chain */
50614 			ZEND_VM_NEXT_OPCODE();
50615 		}
50616 	}
50617 
50618 	jump_zv = zend_hash_index_find(jumptable, Z_LVAL_P(op));
50619 	if (jump_zv != NULL) {
50620 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
50621 		ZEND_VM_CONTINUE();
50622 	} else {
50623 		/* default */
50624 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
50625 		ZEND_VM_CONTINUE();
50626 	}
50627 }
50628 
50629 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50630 {
50631 	USE_OPLINE
50632 	zend_free_op free_op1;
50633 	zval *op, *jump_zv;
50634 	HashTable *jumptable;
50635 
50636 	op = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50637 	jumptable = Z_ARRVAL_P(EX_CONSTANT(opline->op2));
50638 
50639 	if (Z_TYPE_P(op) != IS_STRING) {
50640 		ZVAL_DEREF(op);
50641 		if (Z_TYPE_P(op) != IS_STRING) {
50642 			/* Wrong type, fall back to ZEND_CASE chain */
50643 			ZEND_VM_NEXT_OPCODE();
50644 		}
50645 	}
50646 
50647 	jump_zv = zend_hash_find(jumptable, Z_STR_P(op));
50648 	if (jump_zv != NULL) {
50649 		ZEND_VM_SET_RELATIVE_OPCODE(opline, Z_LVAL_P(jump_zv));
50650 		ZEND_VM_CONTINUE();
50651 	} else {
50652 		/* default */
50653 		ZEND_VM_SET_RELATIVE_OPCODE(opline, opline->extended_value);
50654 		ZEND_VM_CONTINUE();
50655 	}
50656 }
50657 
50658 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50659 {
50660 	USE_OPLINE
50661 	zend_free_op free_op1;
50662 	zval *container, *dim, *value;
50663 	zend_long offset;
50664 
50665 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50666 	dim = EX_CONSTANT(opline->op2);
50667 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
50668 fetch_dim_r_index_array:
50669 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
50670 			offset = Z_LVAL_P(dim);
50671 		} else {
50672 			offset = zval_get_long(dim);
50673 		}
50674 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
50675 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
50676 		if ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) {
50677 			SAVE_OPLINE();
50678 			zval_ptr_dtor_nogc(free_op1);
50679 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50680 		} else {
50681 			ZEND_VM_NEXT_OPCODE();
50682 		}
50683 	} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
50684 		container = Z_REFVAL_P(container);
50685 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
50686 			goto fetch_dim_r_index_array;
50687 		} else {
50688 			goto fetch_dim_r_index_slow;
50689 		}
50690 	} else {
50691 fetch_dim_r_index_slow:
50692 		SAVE_OPLINE();
50693 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
50694 		zval_ptr_dtor_nogc(free_op1);
50695 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50696 	}
50697 
50698 fetch_dim_r_index_undef:
50699 	ZVAL_NULL(EX_VAR(opline->result.var));
50700 	SAVE_OPLINE();
50701 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
50702 	zval_ptr_dtor_nogc(free_op1);
50703 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50704 }
50705 
50706 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(int type ZEND_OPCODE_HANDLER_ARGS_DC)
50707 {
50708 	USE_OPLINE
50709 	zend_free_op free_op1;
50710 	zval *varname;
50711 	zval *retval;
50712 
50713 	SAVE_OPLINE();
50714 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50715 
50716 	retval = zend_fetch_static_property_address(varname, (IS_TMP_VAR|IS_VAR), opline->op2, IS_VAR, type EXECUTE_DATA_CC);
50717 
50718 	if (UNEXPECTED(retval == NULL)) {
50719 		if (EG(exception)) {
50720 			zval_ptr_dtor_nogc(free_op1);
50721 			ZVAL_UNDEF(EX_VAR(opline->result.var));
50722 			HANDLE_EXCEPTION();
50723 		} else {
50724 			ZEND_ASSERT(type == BP_VAR_IS);
50725 			retval = &EG(uninitialized_zval);
50726 		}
50727 	}
50728 
50729 	zval_ptr_dtor_nogc(free_op1);
50730 
50731 	if (type == BP_VAR_R || type == BP_VAR_IS) {
50732 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
50733 	} else {
50734 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
50735 	}
50736 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50737 }
50738 
50739 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50740 {
50741 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
50742 }
50743 
50744 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50745 {
50746 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
50747 }
50748 
50749 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50750 {
50751 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
50752 }
50753 
50754 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50755 {
50756 	USE_OPLINE
50757 
50758 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
50759 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
50760 	} else {
50761 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
50762 	}
50763 }
50764 
50765 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50766 {
50767 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
50768 }
50769 
50770 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50771 {
50772 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_VAR(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
50773 }
50774 
50775 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50776 {
50777 	USE_OPLINE
50778 	zval tmp, *varname;
50779 	zend_class_entry *ce;
50780 	zend_free_op free_op1;
50781 
50782 	SAVE_OPLINE();
50783 
50784 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50785 
50786 	ZVAL_UNDEF(&tmp);
50787 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
50788 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
50789 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
50790 		}
50791 		ZVAL_STR(&tmp, zval_get_string(varname));
50792 		varname = &tmp;
50793 	}
50794 
50795 	if (IS_VAR == IS_CONST) {
50796 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
50797 		if (UNEXPECTED(ce == NULL)) {
50798 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
50799 			if (UNEXPECTED(ce == NULL)) {
50800 				ZEND_ASSERT(EG(exception));
50801 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50802 					zend_string_release(Z_STR(tmp));
50803 				}
50804 				zval_ptr_dtor_nogc(free_op1);
50805 				HANDLE_EXCEPTION();
50806 			}
50807 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
50808 		}
50809 	} else if (IS_VAR == IS_UNUSED) {
50810 		ce = zend_fetch_class(NULL, opline->op2.num);
50811 		if (UNEXPECTED(ce == NULL)) {
50812 			ZEND_ASSERT(EG(exception));
50813 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50814 				zend_string_release(Z_STR(tmp));
50815 			}
50816 			zval_ptr_dtor_nogc(free_op1);
50817 			HANDLE_EXCEPTION();
50818 		}
50819 	} else {
50820 		ce = Z_CE_P(EX_VAR(opline->op2.var));
50821 	}
50822 	zend_std_unset_static_property(ce, Z_STR_P(varname));
50823 
50824 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50825 		zend_string_release(Z_STR(tmp));
50826 	}
50827 	zval_ptr_dtor_nogc(free_op1);
50828 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50829 }
50830 
50831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50832 {
50833 	USE_OPLINE
50834 	zval *value;
50835 	int result;
50836 	zend_free_op free_op1;
50837 	zval tmp, *varname;
50838 	zend_class_entry *ce;
50839 
50840 	SAVE_OPLINE();
50841 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50842 	ZVAL_UNDEF(&tmp);
50843 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
50844 		ZVAL_STR(&tmp, zval_get_string(varname));
50845 		varname = &tmp;
50846 	}
50847 
50848 	if (IS_VAR == IS_CONST) {
50849 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
50850 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
50851 
50852 			/* check if static properties were destoyed */
50853 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
50854 				value = NULL;
50855 			}
50856 
50857 			goto is_static_prop_return;
50858 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
50859 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
50860 			if (UNEXPECTED(ce == NULL)) {
50861 				ZEND_ASSERT(EG(exception));
50862 				ZVAL_UNDEF(EX_VAR(opline->result.var));
50863 				HANDLE_EXCEPTION();
50864 			}
50865 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
50866 		}
50867 	} else {
50868 		if (IS_VAR == IS_UNUSED) {
50869 			ce = zend_fetch_class(NULL, opline->op2.num);
50870 			if (UNEXPECTED(ce == NULL)) {
50871 				ZEND_ASSERT(EG(exception));
50872 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50873 					zend_string_release(Z_STR(tmp));
50874 				}
50875 				zval_ptr_dtor_nogc(free_op1);
50876 				ZVAL_UNDEF(EX_VAR(opline->result.var));
50877 				HANDLE_EXCEPTION();
50878 			}
50879 		} else {
50880 			ce = Z_CE_P(EX_VAR(opline->op2.var));
50881 		}
50882 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
50883 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
50884 
50885 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
50886 
50887 			/* check if static properties were destoyed */
50888 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
50889 				value = NULL;
50890 			}
50891 
50892 			goto is_static_prop_return;
50893 		}
50894 	}
50895 
50896 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
50897 
50898 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
50899 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
50900 	}
50901 
50902 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
50903 		zend_string_release(Z_STR(tmp));
50904 	}
50905 	zval_ptr_dtor_nogc(free_op1);
50906 
50907 is_static_prop_return:
50908 	if (opline->extended_value & ZEND_ISSET) {
50909 		result = value && Z_TYPE_P(value) > IS_NULL &&
50910 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
50911 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
50912 		result = !value || !i_zend_is_true(value);
50913 	}
50914 
50915 	ZEND_VM_SMART_BRANCH(result, 1);
50916 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
50917 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50918 }
50919 
50920 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
50921 {
50922 	USE_OPLINE
50923 	zend_free_op free_op1;
50924 	zval *expr;
50925 	zend_bool result;
50926 
50927 	SAVE_OPLINE();
50928 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50929 
50930 try_instanceof:
50931 	if (Z_TYPE_P(expr) == IS_OBJECT) {
50932 		zend_class_entry *ce;
50933 
50934 		if (IS_VAR == IS_CONST) {
50935 			ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
50936 			if (UNEXPECTED(ce == NULL)) {
50937 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
50938 				if (EXPECTED(ce)) {
50939 					CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
50940 				}
50941 			}
50942 		} else if (IS_VAR == IS_UNUSED) {
50943 			ce = zend_fetch_class(NULL, opline->op2.num);
50944 			if (UNEXPECTED(ce == NULL)) {
50945 				ZEND_ASSERT(EG(exception));
50946 				zval_ptr_dtor_nogc(free_op1);
50947 				ZVAL_UNDEF(EX_VAR(opline->result.var));
50948 				HANDLE_EXCEPTION();
50949 			}
50950 		} else {
50951 			ce = Z_CE_P(EX_VAR(opline->op2.var));
50952 		}
50953 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
50954 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
50955 		expr = Z_REFVAL_P(expr);
50956 		goto try_instanceof;
50957 	} else {
50958 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
50959 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
50960 		}
50961 		result = 0;
50962 	}
50963 	zval_ptr_dtor_nogc(free_op1);
50964 	ZEND_VM_SMART_BRANCH(result, 1);
50965 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
50966 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
50967 }
50968 
50969 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
50970 {
50971 	USE_OPLINE
50972 	zend_free_op free_op1;
50973 	zval *varname;
50974 	zval *retval;
50975 	zend_string *name;
50976 	HashTable *target_symbol_table;
50977 
50978 	SAVE_OPLINE();
50979 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
50980 
50981  	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
50982 		name = Z_STR_P(varname);
50983 	} else if (EXPECTED(Z_TYPE_P(varname) == IS_STRING)) {
50984 		name = Z_STR_P(varname);
50985 		zend_string_addref(name);
50986 	} else {
50987 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
50988 			GET_OP1_UNDEF_CV(varname, BP_VAR_R);
50989 		}
50990 		name = zval_get_string(varname);
50991 	}
50992 
50993 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
50994 	retval = zend_hash_find(target_symbol_table, name);
50995 	if (retval == NULL) {
50996 		if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
50997 			zval *result;
50998 
50999 fetch_this:
51000 			result = EX_VAR(opline->result.var);
51001 			switch (type) {
51002 				case BP_VAR_R:
51003 					if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
51004 						ZVAL_OBJ(result, Z_OBJ(EX(This)));
51005 						Z_ADDREF_P(result);
51006 					} else {
51007 						ZVAL_NULL(result);
51008 						zend_error(E_NOTICE,"Undefined variable: this");
51009 					}
51010 					break;
51011 				case BP_VAR_IS:
51012 					if (EXPECTED(Z_TYPE(EX(This)) == IS_OBJECT)) {
51013 						ZVAL_OBJ(result, Z_OBJ(EX(This)));
51014 						Z_ADDREF_P(result);
51015 					} else {
51016 						ZVAL_NULL(result);
51017 					}
51018 					break;
51019 				case BP_VAR_RW:
51020 				case BP_VAR_W:
51021 					ZVAL_UNDEF(result);
51022 					zend_throw_error(NULL, "Cannot re-assign $this");
51023 					break;
51024 				case BP_VAR_UNSET:
51025 					ZVAL_UNDEF(result);
51026 					zend_throw_error(NULL, "Cannot unset $this");
51027 					break;
51028 				EMPTY_SWITCH_DEFAULT_CASE()
51029 			}
51030 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
51031 				zend_string_release(name);
51032 			}
51033 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51034 		}
51035 		switch (type) {
51036 			case BP_VAR_R:
51037 			case BP_VAR_UNSET:
51038 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
51039 				/* break missing intentionally */
51040 			case BP_VAR_IS:
51041 				retval = &EG(uninitialized_zval);
51042 				break;
51043 			case BP_VAR_RW:
51044 				zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
51045 				retval = zend_hash_update(target_symbol_table, name, &EG(uninitialized_zval));
51046 				break;
51047 			case BP_VAR_W:
51048 				retval = zend_hash_add_new(target_symbol_table, name, &EG(uninitialized_zval));
51049 				break;
51050 			EMPTY_SWITCH_DEFAULT_CASE()
51051 		}
51052 	/* GLOBAL or $$name variable may be an INDIRECT pointer to CV */
51053 	} else if (Z_TYPE_P(retval) == IS_INDIRECT) {
51054 		retval = Z_INDIRECT_P(retval);
51055 		if (Z_TYPE_P(retval) == IS_UNDEF) {
51056 			if (UNEXPECTED(zend_string_equals(name, ZSTR_KNOWN(ZEND_STR_THIS)))) {
51057 				goto fetch_this;
51058 			}
51059 			switch (type) {
51060 				case BP_VAR_R:
51061 				case BP_VAR_UNSET:
51062 					zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
51063 					/* break missing intentionally */
51064 				case BP_VAR_IS:
51065 					retval = &EG(uninitialized_zval);
51066 					break;
51067 				case BP_VAR_RW:
51068 					zend_error(E_NOTICE,"Undefined variable: %s", ZSTR_VAL(name));
51069 					/* break missing intentionally */
51070 				case BP_VAR_W:
51071 					ZVAL_NULL(retval);
51072 					break;
51073 				EMPTY_SWITCH_DEFAULT_CASE()
51074 			}
51075 		}
51076 	}
51077 
51078 	if ((opline->extended_value & ZEND_FETCH_TYPE_MASK) != ZEND_FETCH_GLOBAL_LOCK) {
51079 		zval_ptr_dtor_nogc(free_op1);
51080 	}
51081 
51082 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
51083 		zend_string_release(name);
51084 	}
51085 
51086 	ZEND_ASSERT(retval != NULL);
51087 	if (type == BP_VAR_R || type == BP_VAR_IS) {
51088 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
51089 	} else {
51090 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
51091 	}
51092 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51093 }
51094 
51095 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51096 {
51097 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51098 }
51099 
51100 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51101 {
51102 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51103 }
51104 
51105 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51106 {
51107 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51108 }
51109 
51110 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51111 {
51112 	USE_OPLINE
51113 
51114 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
51115 		ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51116 	} else {
51117 		ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51118 	}
51119 }
51120 
51121 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51122 {
51123 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51124 }
51125 
51126 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51127 {
51128 	ZEND_VM_TAIL_CALL(zend_fetch_var_address_helper_SPEC_TMPVAR_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51129 }
51130 
51131 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(int type ZEND_OPCODE_HANDLER_ARGS_DC)
51132 {
51133 	USE_OPLINE
51134 	zend_free_op free_op1;
51135 	zval *varname;
51136 	zval *retval;
51137 
51138 	SAVE_OPLINE();
51139 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51140 
51141 	retval = zend_fetch_static_property_address(varname, (IS_TMP_VAR|IS_VAR), opline->op2, IS_UNUSED, type EXECUTE_DATA_CC);
51142 
51143 	if (UNEXPECTED(retval == NULL)) {
51144 		if (EG(exception)) {
51145 			zval_ptr_dtor_nogc(free_op1);
51146 			ZVAL_UNDEF(EX_VAR(opline->result.var));
51147 			HANDLE_EXCEPTION();
51148 		} else {
51149 			ZEND_ASSERT(type == BP_VAR_IS);
51150 			retval = &EG(uninitialized_zval);
51151 		}
51152 	}
51153 
51154 	zval_ptr_dtor_nogc(free_op1);
51155 
51156 	if (type == BP_VAR_R || type == BP_VAR_IS) {
51157 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), retval);
51158 	} else {
51159 		ZVAL_INDIRECT(EX_VAR(opline->result.var), retval);
51160 	}
51161 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51162 }
51163 
51164 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51165 {
51166 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51167 }
51168 
51169 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51170 {
51171 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51172 }
51173 
51174 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51175 {
51176 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_RW ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51177 }
51178 
51179 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51180 {
51181 	USE_OPLINE
51182 
51183 	if (zend_is_by_ref_func_arg_fetch(opline, EX(call))) {
51184 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_W ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51185 	} else {
51186 		ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_R ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51187 	}
51188 }
51189 
51190 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51191 {
51192 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_UNSET ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51193 }
51194 
51195 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51196 {
51197 	ZEND_VM_TAIL_CALL(zend_fetch_static_prop_helper_SPEC_TMPVAR_UNUSED(BP_VAR_IS ZEND_OPCODE_HANDLER_ARGS_PASSTHRU_CC));
51198 }
51199 
51200 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51201 {
51202 	USE_OPLINE
51203 	zval tmp, *varname;
51204 	HashTable *target_symbol_table;
51205 	zend_free_op free_op1;
51206 
51207 	SAVE_OPLINE();
51208 
51209 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51210 
51211 	ZVAL_UNDEF(&tmp);
51212 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
51213 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
51214 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
51215 		}
51216 		ZVAL_STR(&tmp, zval_get_string(varname));
51217 		varname = &tmp;
51218 	}
51219 
51220 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
51221 	zend_hash_del_ind(target_symbol_table, Z_STR_P(varname));
51222 
51223 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
51224 		zend_string_release(Z_STR(tmp));
51225 	}
51226 	zval_ptr_dtor_nogc(free_op1);
51227 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51228 }
51229 
51230 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51231 {
51232 	USE_OPLINE
51233 	zval tmp, *varname;
51234 	zend_class_entry *ce;
51235 	zend_free_op free_op1;
51236 
51237 	SAVE_OPLINE();
51238 
51239 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51240 
51241 	ZVAL_UNDEF(&tmp);
51242 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
51243 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(varname) == IS_UNDEF)) {
51244 			varname = GET_OP1_UNDEF_CV(varname, BP_VAR_R);
51245 		}
51246 		ZVAL_STR(&tmp, zval_get_string(varname));
51247 		varname = &tmp;
51248 	}
51249 
51250 	if (IS_UNUSED == IS_CONST) {
51251 		ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
51252 		if (UNEXPECTED(ce == NULL)) {
51253 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
51254 			if (UNEXPECTED(ce == NULL)) {
51255 				ZEND_ASSERT(EG(exception));
51256 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
51257 					zend_string_release(Z_STR(tmp));
51258 				}
51259 				zval_ptr_dtor_nogc(free_op1);
51260 				HANDLE_EXCEPTION();
51261 			}
51262 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
51263 		}
51264 	} else if (IS_UNUSED == IS_UNUSED) {
51265 		ce = zend_fetch_class(NULL, opline->op2.num);
51266 		if (UNEXPECTED(ce == NULL)) {
51267 			ZEND_ASSERT(EG(exception));
51268 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
51269 				zend_string_release(Z_STR(tmp));
51270 			}
51271 			zval_ptr_dtor_nogc(free_op1);
51272 			HANDLE_EXCEPTION();
51273 		}
51274 	} else {
51275 		ce = Z_CE_P(EX_VAR(opline->op2.var));
51276 	}
51277 	zend_std_unset_static_property(ce, Z_STR_P(varname));
51278 
51279 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
51280 		zend_string_release(Z_STR(tmp));
51281 	}
51282 	zval_ptr_dtor_nogc(free_op1);
51283 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51284 }
51285 
51286 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51287 {
51288 	USE_OPLINE
51289 	zval *value;
51290 	int result;
51291 	zend_free_op free_op1;
51292 	zval tmp, *varname;
51293 	HashTable *target_symbol_table;
51294 
51295 	SAVE_OPLINE();
51296 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51297 	ZVAL_UNDEF(&tmp);
51298 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
51299 		ZVAL_STR(&tmp, zval_get_string(varname));
51300 		varname = &tmp;
51301 	}
51302 
51303 	target_symbol_table = zend_get_target_symbol_table(opline->extended_value & ZEND_FETCH_TYPE_MASK EXECUTE_DATA_CC);
51304 	value = zend_hash_find_ind(target_symbol_table, Z_STR_P(varname));
51305 
51306 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
51307 		zend_string_release(Z_STR(tmp));
51308 	}
51309 	zval_ptr_dtor_nogc(free_op1);
51310 
51311 	if (opline->extended_value & ZEND_ISSET) {
51312 		result = value && Z_TYPE_P(value) > IS_NULL &&
51313 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
51314 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
51315 		result = !value || !i_zend_is_true(value);
51316 	}
51317 
51318 	ZEND_VM_SMART_BRANCH(result, 1);
51319 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
51320 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51321 }
51322 
51323 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51324 {
51325 	USE_OPLINE
51326 	zval *value;
51327 	int result;
51328 	zend_free_op free_op1;
51329 	zval tmp, *varname;
51330 	zend_class_entry *ce;
51331 
51332 	SAVE_OPLINE();
51333 	varname = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51334 	ZVAL_UNDEF(&tmp);
51335 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE_P(varname) != IS_STRING) {
51336 		ZVAL_STR(&tmp, zval_get_string(varname));
51337 		varname = &tmp;
51338 	}
51339 
51340 	if (IS_UNUSED == IS_CONST) {
51341 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST && EXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)))) != NULL)) {
51342 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
51343 
51344 			/* check if static properties were destoyed */
51345 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
51346 				value = NULL;
51347 			}
51348 
51349 			goto is_static_prop_return;
51350 		} else if (UNEXPECTED((ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)))) == NULL)) {
51351 			ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_DEFAULT | ZEND_FETCH_CLASS_EXCEPTION);
51352 			if (UNEXPECTED(ce == NULL)) {
51353 				ZEND_ASSERT(EG(exception));
51354 				ZVAL_UNDEF(EX_VAR(opline->result.var));
51355 				HANDLE_EXCEPTION();
51356 			}
51357 			CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
51358 		}
51359 	} else {
51360 		if (IS_UNUSED == IS_UNUSED) {
51361 			ce = zend_fetch_class(NULL, opline->op2.num);
51362 			if (UNEXPECTED(ce == NULL)) {
51363 				ZEND_ASSERT(EG(exception));
51364 				if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
51365 					zend_string_release(Z_STR(tmp));
51366 				}
51367 				zval_ptr_dtor_nogc(free_op1);
51368 				ZVAL_UNDEF(EX_VAR(opline->result.var));
51369 				HANDLE_EXCEPTION();
51370 			}
51371 		} else {
51372 			ce = Z_CE_P(EX_VAR(opline->op2.var));
51373 		}
51374 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
51375 		    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1))) == ce)) {
51376 
51377 			value = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)) + sizeof(void*));
51378 
51379 			/* check if static properties were destoyed */
51380 			if (UNEXPECTED(CE_STATIC_MEMBERS(ce) == NULL)) {
51381 				value = NULL;
51382 			}
51383 
51384 			goto is_static_prop_return;
51385 		}
51386 	}
51387 
51388 	value = zend_std_get_static_property(ce, Z_STR_P(varname), 1);
51389 
51390 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST && value) {
51391 		CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op1)), ce, value);
51392 	}
51393 
51394 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST && Z_TYPE(tmp) != IS_UNDEF) {
51395 		zend_string_release(Z_STR(tmp));
51396 	}
51397 	zval_ptr_dtor_nogc(free_op1);
51398 
51399 is_static_prop_return:
51400 	if (opline->extended_value & ZEND_ISSET) {
51401 		result = value && Z_TYPE_P(value) > IS_NULL &&
51402 		    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
51403 	} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
51404 		result = !value || !i_zend_is_true(value);
51405 	}
51406 
51407 	ZEND_VM_SMART_BRANCH(result, 1);
51408 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
51409 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51410 }
51411 
51412 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51413 {
51414 	USE_OPLINE
51415 	zend_free_op free_op1;
51416 	zval *expr;
51417 	zend_bool result;
51418 
51419 	SAVE_OPLINE();
51420 	expr = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51421 
51422 try_instanceof:
51423 	if (Z_TYPE_P(expr) == IS_OBJECT) {
51424 		zend_class_entry *ce;
51425 
51426 		if (IS_UNUSED == IS_CONST) {
51427 			ce = CACHED_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)));
51428 			if (UNEXPECTED(ce == NULL)) {
51429 				ce = zend_fetch_class_by_name(Z_STR_P(EX_CONSTANT(opline->op2)), EX_CONSTANT(opline->op2) + 1, ZEND_FETCH_CLASS_NO_AUTOLOAD);
51430 				if (EXPECTED(ce)) {
51431 					CACHE_PTR(Z_CACHE_SLOT_P(EX_CONSTANT(opline->op2)), ce);
51432 				}
51433 			}
51434 		} else if (IS_UNUSED == IS_UNUSED) {
51435 			ce = zend_fetch_class(NULL, opline->op2.num);
51436 			if (UNEXPECTED(ce == NULL)) {
51437 				ZEND_ASSERT(EG(exception));
51438 				zval_ptr_dtor_nogc(free_op1);
51439 				ZVAL_UNDEF(EX_VAR(opline->result.var));
51440 				HANDLE_EXCEPTION();
51441 			}
51442 		} else {
51443 			ce = Z_CE_P(EX_VAR(opline->op2.var));
51444 		}
51445 		result = ce && instanceof_function(Z_OBJCE_P(expr), ce);
51446 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_TYPE_P(expr) == IS_REFERENCE) {
51447 		expr = Z_REFVAL_P(expr);
51448 		goto try_instanceof;
51449 	} else {
51450 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(expr) == IS_UNDEF)) {
51451 			GET_OP1_UNDEF_CV(expr, BP_VAR_R);
51452 		}
51453 		result = 0;
51454 	}
51455 	zval_ptr_dtor_nogc(free_op1);
51456 	ZEND_VM_SMART_BRANCH(result, 1);
51457 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
51458 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51459 }
51460 
51461 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51462 {
51463 	USE_OPLINE
51464 	zend_free_op free_op1;
51465 	zval *op1, *op2, *result;
51466 
51467 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51468 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51469 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
51470 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51471 			result = EX_VAR(opline->result.var);
51472 			fast_long_add_function(result, op1, op2);
51473 			ZEND_VM_NEXT_OPCODE();
51474 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51475 			result = EX_VAR(opline->result.var);
51476 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
51477 			ZEND_VM_NEXT_OPCODE();
51478 		}
51479 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
51480 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51481 			result = EX_VAR(opline->result.var);
51482 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
51483 			ZEND_VM_NEXT_OPCODE();
51484 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51485 			result = EX_VAR(opline->result.var);
51486 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
51487 			ZEND_VM_NEXT_OPCODE();
51488 		}
51489 	}
51490 
51491 	SAVE_OPLINE();
51492 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
51493 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51494 	}
51495 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
51496 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51497 	}
51498 	add_function(EX_VAR(opline->result.var), op1, op2);
51499 	zval_ptr_dtor_nogc(free_op1);
51500 
51501 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51502 }
51503 
51504 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51505 {
51506 	USE_OPLINE
51507 	zend_free_op free_op1;
51508 	zval *op1, *op2, *result;
51509 
51510 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51511 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51512 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
51513 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51514 			result = EX_VAR(opline->result.var);
51515 			fast_long_sub_function(result, op1, op2);
51516 			ZEND_VM_NEXT_OPCODE();
51517 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51518 			result = EX_VAR(opline->result.var);
51519 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
51520 			ZEND_VM_NEXT_OPCODE();
51521 		}
51522 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
51523 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51524 			result = EX_VAR(opline->result.var);
51525 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
51526 			ZEND_VM_NEXT_OPCODE();
51527 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51528 			result = EX_VAR(opline->result.var);
51529 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
51530 			ZEND_VM_NEXT_OPCODE();
51531 		}
51532 	}
51533 
51534 	SAVE_OPLINE();
51535 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
51536 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51537 	}
51538 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
51539 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51540 	}
51541 	sub_function(EX_VAR(opline->result.var), op1, op2);
51542 	zval_ptr_dtor_nogc(free_op1);
51543 
51544 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51545 }
51546 
51547 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51548 {
51549 	USE_OPLINE
51550 	zend_free_op free_op1;
51551 	zval *op1, *op2, *result;
51552 
51553 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51554 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51555 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
51556 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51557 			zend_long overflow;
51558 
51559 			result = EX_VAR(opline->result.var);
51560 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
51561 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
51562 			ZEND_VM_NEXT_OPCODE();
51563 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51564 			result = EX_VAR(opline->result.var);
51565 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
51566 			ZEND_VM_NEXT_OPCODE();
51567 		}
51568 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
51569 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51570 			result = EX_VAR(opline->result.var);
51571 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
51572 			ZEND_VM_NEXT_OPCODE();
51573 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51574 			result = EX_VAR(opline->result.var);
51575 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
51576 			ZEND_VM_NEXT_OPCODE();
51577 		}
51578 	}
51579 
51580 	SAVE_OPLINE();
51581 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
51582 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51583 	}
51584 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
51585 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51586 	}
51587 	mul_function(EX_VAR(opline->result.var), op1, op2);
51588 	zval_ptr_dtor_nogc(free_op1);
51589 
51590 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51591 }
51592 
51593 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51594 {
51595 	USE_OPLINE
51596 	zend_free_op free_op1;
51597 	zval *op1, *op2;
51598 
51599 	SAVE_OPLINE();
51600 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51601 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
51602 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
51603 	zval_ptr_dtor_nogc(free_op1);
51604 
51605 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51606 }
51607 
51608 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51609 {
51610 	USE_OPLINE
51611 	zend_free_op free_op1;
51612 	zval *op1, *op2, *result;
51613 
51614 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51615 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51616 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
51617 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51618 			result = EX_VAR(opline->result.var);
51619 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
51620 				SAVE_OPLINE();
51621 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
51622 				ZVAL_UNDEF(EX_VAR(opline->result.var));
51623 				HANDLE_EXCEPTION();
51624 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
51625 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
51626 				ZVAL_LONG(result, 0);
51627 			} else {
51628 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
51629 			}
51630 			ZEND_VM_NEXT_OPCODE();
51631 		}
51632 	}
51633 
51634 	SAVE_OPLINE();
51635 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
51636 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51637 	}
51638 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
51639 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51640 	}
51641 	mod_function(EX_VAR(opline->result.var), op1, op2);
51642 	zval_ptr_dtor_nogc(free_op1);
51643 
51644 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51645 }
51646 
51647 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51648 {
51649 	USE_OPLINE
51650 	zend_free_op free_op1;
51651 	zval *op1, *op2;
51652 
51653 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51654 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51655 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
51656 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
51657 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
51658 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
51659 		ZEND_VM_NEXT_OPCODE();
51660 	}
51661 
51662 	SAVE_OPLINE();
51663 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
51664 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51665 	}
51666 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
51667 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51668 	}
51669 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
51670 	zval_ptr_dtor_nogc(free_op1);
51671 
51672 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51673 }
51674 
51675 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51676 {
51677 	USE_OPLINE
51678 	zend_free_op free_op1;
51679 	zval *op1, *op2;
51680 
51681 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51682 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51683 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
51684 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
51685 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
51686 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
51687 		ZEND_VM_NEXT_OPCODE();
51688 	}
51689 
51690 	SAVE_OPLINE();
51691 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
51692 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51693 	}
51694 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
51695 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51696 	}
51697 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
51698 	zval_ptr_dtor_nogc(free_op1);
51699 
51700 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51701 }
51702 
51703 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51704 {
51705 	USE_OPLINE
51706 	zend_free_op free_op1;
51707 	zval *op1, *op2;
51708 
51709 	SAVE_OPLINE();
51710 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51711 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
51712 	pow_function(EX_VAR(opline->result.var), op1, op2);
51713 	zval_ptr_dtor_nogc(free_op1);
51714 
51715 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51716 }
51717 
51718 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51719 {
51720 	USE_OPLINE
51721 	zend_free_op free_op1;
51722 	zval *op1, *op2;
51723 
51724 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51725 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51726 
51727 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
51728 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
51729 		zend_string *op1_str = Z_STR_P(op1);
51730 		zend_string *op2_str = Z_STR_P(op2);
51731 		zend_string *str;
51732 
51733 		do {
51734 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
51735 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
51736 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
51737 					zval_ptr_dtor_nogc(free_op1);
51738 					break;
51739 				}
51740 			}
51741 			if (IS_CV != IS_CONST) {
51742 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
51743 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
51744 					zval_ptr_dtor_nogc(free_op1);
51745 					break;
51746 				}
51747 			}
51748 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
51749 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
51750 			    size_t len = ZSTR_LEN(op1_str);
51751 
51752 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
51753 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
51754 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
51755 				break;
51756 			} else {
51757 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
51758 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
51759 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
51760 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
51761 			}
51762 			zval_ptr_dtor_nogc(free_op1);
51763 		} while (0);
51764 
51765 		ZEND_VM_NEXT_OPCODE();
51766 	} else {
51767 		SAVE_OPLINE();
51768 
51769 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
51770 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51771 		}
51772 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
51773 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51774 		}
51775 		concat_function(EX_VAR(opline->result.var), op1, op2);
51776 		zval_ptr_dtor_nogc(free_op1);
51777 
51778 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51779 	}
51780 }
51781 
51782 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51783 {
51784 	USE_OPLINE
51785 	zend_free_op free_op1;
51786 	zval *op1, *op2, *result;
51787 
51788 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51789 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51790 	do {
51791 		int result;
51792 
51793 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
51794 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
51795 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
51796 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
51797 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
51798 			} else {
51799 				break;
51800 			}
51801 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
51802 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
51803 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
51804 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
51805 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
51806 			} else {
51807 				break;
51808 			}
51809 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
51810 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
51811 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
51812 					result = 1;
51813 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
51814 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
51815 						result = 0;
51816 					} else {
51817 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
51818 					}
51819 				} else {
51820 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
51821 				}
51822 				zval_ptr_dtor_nogc(free_op1);
51823 
51824 			} else {
51825 				break;
51826 			}
51827 		} else {
51828 			break;
51829 		}
51830 		ZEND_VM_SMART_BRANCH(result, 0);
51831 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
51832 		ZEND_VM_NEXT_OPCODE();
51833 	} while (0);
51834 
51835 	SAVE_OPLINE();
51836 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
51837 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51838 	}
51839 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
51840 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51841 	}
51842 	result = EX_VAR(opline->result.var);
51843 	compare_function(result, op1, op2);
51844 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
51845 	zval_ptr_dtor_nogc(free_op1);
51846 
51847 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51848 }
51849 
51850 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51851 {
51852 	USE_OPLINE
51853 	zend_free_op free_op1;
51854 	zval *op1, *op2, *result;
51855 
51856 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51857 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51858 	do {
51859 		int result;
51860 
51861 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
51862 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
51863 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
51864 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
51865 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
51866 			} else {
51867 				break;
51868 			}
51869 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
51870 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
51871 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
51872 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
51873 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
51874 			} else {
51875 				break;
51876 			}
51877 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
51878 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
51879 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
51880 					result = 0;
51881 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
51882 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
51883 						result = 1;
51884 					} else {
51885 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
51886 					}
51887 				} else {
51888 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
51889 				}
51890 				zval_ptr_dtor_nogc(free_op1);
51891 
51892 			} else {
51893 				break;
51894 			}
51895 		} else {
51896 			break;
51897 		}
51898 		ZEND_VM_SMART_BRANCH(result, 0);
51899 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
51900 		ZEND_VM_NEXT_OPCODE();
51901 	} while (0);
51902 
51903 	SAVE_OPLINE();
51904 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
51905 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51906 	}
51907 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
51908 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51909 	}
51910 	result = EX_VAR(opline->result.var);
51911 	compare_function(result, op1, op2);
51912 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
51913 	zval_ptr_dtor_nogc(free_op1);
51914 
51915 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51916 }
51917 
51918 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51919 {
51920 	USE_OPLINE
51921 	zend_free_op free_op1;
51922 	zval *op1, *op2, *result;
51923 
51924 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51925 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51926 	do {
51927 		int result;
51928 
51929 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
51930 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51931 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
51932 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51933 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
51934 			} else {
51935 				break;
51936 			}
51937 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
51938 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51939 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
51940 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51941 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
51942 			} else {
51943 				break;
51944 			}
51945 		} else {
51946 			break;
51947 		}
51948 		ZEND_VM_SMART_BRANCH(result, 0);
51949 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
51950 		ZEND_VM_NEXT_OPCODE();
51951 	} while (0);
51952 
51953 	SAVE_OPLINE();
51954 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
51955 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
51956 	}
51957 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
51958 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
51959 	}
51960 	result = EX_VAR(opline->result.var);
51961 	compare_function(result, op1, op2);
51962 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
51963 	zval_ptr_dtor_nogc(free_op1);
51964 
51965 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
51966 }
51967 
51968 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
51969 {
51970 	USE_OPLINE
51971 	zend_free_op free_op1;
51972 	zval *op1, *op2, *result;
51973 
51974 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
51975 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
51976 	do {
51977 		int result;
51978 
51979 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
51980 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51981 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
51982 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51983 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
51984 			} else {
51985 				break;
51986 			}
51987 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
51988 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
51989 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
51990 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
51991 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
51992 			} else {
51993 				break;
51994 			}
51995 		} else {
51996 			break;
51997 		}
51998 		ZEND_VM_SMART_BRANCH(result, 0);
51999 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
52000 		ZEND_VM_NEXT_OPCODE();
52001 	} while (0);
52002 
52003 	SAVE_OPLINE();
52004 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52005 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52006 	}
52007 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52008 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52009 	}
52010 	result = EX_VAR(opline->result.var);
52011 	compare_function(result, op1, op2);
52012 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
52013 	zval_ptr_dtor_nogc(free_op1);
52014 
52015 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52016 }
52017 
52018 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52019 {
52020 	USE_OPLINE
52021 	zend_free_op free_op1;
52022 	zval *op1, *op2;
52023 
52024 	SAVE_OPLINE();
52025 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52026 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
52027 	compare_function(EX_VAR(opline->result.var), op1, op2);
52028 	zval_ptr_dtor_nogc(free_op1);
52029 
52030 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52031 }
52032 
52033 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52034 {
52035 	USE_OPLINE
52036 	zend_free_op free_op1;
52037 	zval *op1, *op2;
52038 
52039 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52040 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52041 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
52042 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52043 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
52044 		ZEND_VM_NEXT_OPCODE();
52045 	}
52046 
52047 	SAVE_OPLINE();
52048 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52049 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52050 	}
52051 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52052 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52053 	}
52054 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
52055 	zval_ptr_dtor_nogc(free_op1);
52056 
52057 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52058 }
52059 
52060 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52061 {
52062 	USE_OPLINE
52063 	zend_free_op free_op1;
52064 	zval *op1, *op2;
52065 
52066 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52067 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52068 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
52069 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52070 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
52071 		ZEND_VM_NEXT_OPCODE();
52072 	}
52073 
52074 	SAVE_OPLINE();
52075 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52076 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52077 	}
52078 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52079 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52080 	}
52081 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
52082 	zval_ptr_dtor_nogc(free_op1);
52083 
52084 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52085 }
52086 
52087 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52088 {
52089 	USE_OPLINE
52090 	zend_free_op free_op1;
52091 	zval *op1, *op2;
52092 
52093 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52094 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52095 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
52096 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52097 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
52098 		ZEND_VM_NEXT_OPCODE();
52099 	}
52100 
52101 	SAVE_OPLINE();
52102 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52103 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52104 	}
52105 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52106 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52107 	}
52108 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
52109 	zval_ptr_dtor_nogc(free_op1);
52110 
52111 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52112 }
52113 
52114 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52115 {
52116 	USE_OPLINE
52117 	zend_free_op free_op1;
52118 	zval *op1, *op2;
52119 
52120 	SAVE_OPLINE();
52121 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52122 	op2 = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
52123 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
52124 	zval_ptr_dtor_nogc(free_op1);
52125 
52126 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52127 }
52128 
52129 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52130 {
52131 	USE_OPLINE
52132 	zend_free_op free_op1;
52133 	zval *container, *dim, *value, *result;
52134 
52135 	SAVE_OPLINE();
52136 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52137 	dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52138 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
52139 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
52140 fetch_dim_r_array:
52141 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, IS_CV, BP_VAR_R EXECUTE_DATA_CC);
52142 			result = EX_VAR(opline->result.var);
52143 			ZVAL_COPY_UNREF(result, value);
52144 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
52145 			container = Z_REFVAL_P(container);
52146 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
52147 				goto fetch_dim_r_array;
52148 			} else {
52149 				goto fetch_dim_r_slow;
52150 			}
52151 		} else {
52152 fetch_dim_r_slow:
52153 			result = EX_VAR(opline->result.var);
52154 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
52155 		}
52156 	} else {
52157 		result = EX_VAR(opline->result.var);
52158 		zend_fetch_dimension_address_read_R(result, container, dim, IS_CV EXECUTE_DATA_CC);
52159 	}
52160 
52161 	zval_ptr_dtor_nogc(free_op1);
52162 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52163 }
52164 
52165 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52166 {
52167 	USE_OPLINE
52168 	zend_free_op free_op1;
52169 	zval *container;
52170 
52171 	SAVE_OPLINE();
52172 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52173 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC), IS_CV EXECUTE_DATA_CC);
52174 
52175 	zval_ptr_dtor_nogc(free_op1);
52176 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52177 }
52178 
52179 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52180 {
52181 	USE_OPLINE
52182 	zend_free_op free_op1;
52183 	zval *container;
52184 
52185 	zval *offset;
52186 
52187 	SAVE_OPLINE();
52188 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52189 
52190 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
52191 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
52192 	}
52193 
52194 	offset  = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
52195 
52196 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
52197 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
52198 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
52199 			container = Z_REFVAL_P(container);
52200 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
52201 				goto fetch_obj_is_no_object;
52202 			}
52203 		} else {
52204 			goto fetch_obj_is_no_object;
52205 		}
52206 	}
52207 
52208 	/* here we are sure we are dealing with an object */
52209 	do {
52210 		zend_object *zobj = Z_OBJ_P(container);
52211 		zval *retval;
52212 
52213 		if (IS_CV == IS_CONST &&
52214 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
52215 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
52216 
52217 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
52218 				retval = OBJ_PROP(zobj, prop_offset);
52219 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
52220 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
52221 					break;
52222 				}
52223 			} else if (EXPECTED(zobj->properties != NULL)) {
52224 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
52225 				if (EXPECTED(retval)) {
52226 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
52227 					break;
52228 				}
52229 			}
52230 		}
52231 
52232 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
52233 fetch_obj_is_no_object:
52234 			ZVAL_NULL(EX_VAR(opline->result.var));
52235 		} else {
52236 
52237 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
52238 
52239 			if (retval != EX_VAR(opline->result.var)) {
52240 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
52241 			}
52242 		}
52243 	} while (0);
52244 
52245 	zval_ptr_dtor_nogc(free_op1);
52246 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52247 }
52248 
52249 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52250 {
52251 	USE_OPLINE
52252 	zend_free_op free_op1;
52253 	zval *container;
52254 
52255 	SAVE_OPLINE();
52256 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52257 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC) EXECUTE_DATA_CC);
52258 
52259 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52260 }
52261 
52262 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52263 {
52264 	USE_OPLINE
52265 	zend_free_op free_op1;
52266 	zval *op1, *op2;
52267 	zend_string *op1_str, *op2_str, *str;
52268 
52269 
52270 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52271 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52272 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
52273 	    (IS_CV == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
52274 		zend_string *op1_str = Z_STR_P(op1);
52275 		zend_string *op2_str = Z_STR_P(op2);
52276 		zend_string *str;
52277 
52278 		do {
52279 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
52280 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
52281 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
52282 					zval_ptr_dtor_nogc(free_op1);
52283 					break;
52284 				}
52285 			}
52286 			if (IS_CV != IS_CONST) {
52287 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
52288 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
52289 					zval_ptr_dtor_nogc(free_op1);
52290 					break;
52291 				}
52292 			}
52293 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
52294 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
52295 			    size_t len = ZSTR_LEN(op1_str);
52296 
52297 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
52298 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
52299 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
52300 				break;
52301 			} else {
52302 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
52303 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
52304 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
52305 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
52306 			}
52307 			zval_ptr_dtor_nogc(free_op1);
52308 		} while (0);
52309 
52310 		ZEND_VM_NEXT_OPCODE();
52311 	}
52312 
52313 	SAVE_OPLINE();
52314 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
52315 		op1_str = Z_STR_P(op1);
52316 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
52317 		op1_str = zend_string_copy(Z_STR_P(op1));
52318 	} else {
52319 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
52320 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52321 		}
52322 		op1_str = _zval_get_string_func(op1);
52323 	}
52324 	if (IS_CV == IS_CONST) {
52325 		op2_str = Z_STR_P(op2);
52326 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
52327 		op2_str = zend_string_copy(Z_STR_P(op2));
52328 	} else {
52329 		if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
52330 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52331 		}
52332 		op2_str = _zval_get_string_func(op2);
52333 	}
52334 	do {
52335 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
52336 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
52337 				if (IS_CV == IS_CONST) {
52338 					zend_string_addref(op2_str);
52339 				}
52340 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
52341 				zend_string_release(op1_str);
52342 				break;
52343 			}
52344 		}
52345 		if (IS_CV != IS_CONST) {
52346 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
52347 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
52348 					zend_string_addref(op1_str);
52349 				}
52350 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
52351 				zend_string_release(op2_str);
52352 				break;
52353 			}
52354 		}
52355 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
52356 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
52357 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
52358 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
52359 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
52360 			zend_string_release(op1_str);
52361 		}
52362 		if (IS_CV != IS_CONST) {
52363 			zend_string_release(op2_str);
52364 		}
52365 	} while (0);
52366 	zval_ptr_dtor_nogc(free_op1);
52367 
52368 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52369 }
52370 
52371 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52372 {
52373 	USE_OPLINE
52374 	zval *function_name;
52375 	zend_free_op free_op1;
52376 	zval *object;
52377 	zend_function *fbc;
52378 	zend_class_entry *called_scope;
52379 	zend_object *obj;
52380 	zend_execute_data *call;
52381 	uint32_t call_info;
52382 
52383 	SAVE_OPLINE();
52384 
52385 	object = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52386 
52387 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
52388 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
52389 	}
52390 
52391 	function_name = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52392 
52393 	if (IS_CV != IS_CONST &&
52394 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
52395 		do {
52396 			if ((IS_CV & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
52397 				function_name = Z_REFVAL_P(function_name);
52398 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
52399 					break;
52400 				}
52401 			} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
52402 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
52403 				if (UNEXPECTED(EG(exception) != NULL)) {
52404 					zval_ptr_dtor_nogc(free_op1);
52405 					HANDLE_EXCEPTION();
52406 				}
52407 			}
52408 			zend_throw_error(NULL, "Method name must be a string");
52409 
52410 			zval_ptr_dtor_nogc(free_op1);
52411 			HANDLE_EXCEPTION();
52412 		} while (0);
52413 	}
52414 
52415 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
52416 		do {
52417 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
52418 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
52419 					object = Z_REFVAL_P(object);
52420 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
52421 						break;
52422 					}
52423 				}
52424 				if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
52425 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
52426 					if (UNEXPECTED(EG(exception) != NULL)) {
52427 
52428 						HANDLE_EXCEPTION();
52429 					}
52430 				}
52431 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
52432 
52433 				zval_ptr_dtor_nogc(free_op1);
52434 				HANDLE_EXCEPTION();
52435 			}
52436 		} while (0);
52437 	}
52438 
52439 	obj = Z_OBJ_P(object);
52440 	called_scope = obj->ce;
52441 
52442 	if (IS_CV == IS_CONST &&
52443 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
52444 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
52445 	} else {
52446 	    zend_object *orig_obj = obj;
52447 
52448 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
52449 			zend_throw_error(NULL, "Object does not support method calls");
52450 
52451 			zval_ptr_dtor_nogc(free_op1);
52452 			HANDLE_EXCEPTION();
52453 		}
52454 
52455 		/* First, locate the function. */
52456 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), ((IS_CV == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
52457 		if (UNEXPECTED(fbc == NULL)) {
52458 			if (EXPECTED(!EG(exception))) {
52459 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
52460 			}
52461 
52462 			zval_ptr_dtor_nogc(free_op1);
52463 			HANDLE_EXCEPTION();
52464 		}
52465 		if (IS_CV == IS_CONST &&
52466 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
52467 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
52468 		    EXPECTED(obj == orig_obj)) {
52469 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
52470 		}
52471 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
52472 			init_func_run_time_cache(&fbc->op_array);
52473 		}
52474 	}
52475 
52476 	call_info = ZEND_CALL_NESTED_FUNCTION;
52477 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
52478 		obj = NULL;
52479 	} else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) {
52480 		/* CV may be changed indirectly (e.g. when it's a reference) */
52481 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
52482 		GC_REFCOUNT(obj)++; /* For $this pointer */
52483 	}
52484 
52485 	zval_ptr_dtor_nogc(free_op1);
52486 
52487 	if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
52488 		HANDLE_EXCEPTION();
52489 	}
52490 
52491 	call = zend_vm_stack_push_call_frame(call_info,
52492 		fbc, opline->extended_value, called_scope, obj);
52493 	call->prev_execute_data = EX(call);
52494 	EX(call) = call;
52495 
52496 	ZEND_VM_NEXT_OPCODE();
52497 }
52498 
52499 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52500 {
52501 	USE_OPLINE
52502 	zend_free_op free_op1;
52503 	zval *op1, *op2, *result;
52504 
52505 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52506 	op2 = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52507 	do {
52508 		int result;
52509 
52510 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
52511 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
52512 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
52513 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
52514 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
52515 			} else {
52516 				break;
52517 			}
52518 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
52519 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
52520 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
52521 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
52522 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
52523 			} else {
52524 				break;
52525 			}
52526 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
52527 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
52528 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
52529 					result = 1;
52530 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
52531 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
52532 						result = 0;
52533 					} else {
52534 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
52535 					}
52536 				} else {
52537 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
52538 				}
52539 
52540 			} else {
52541 				break;
52542 			}
52543 		} else {
52544 			break;
52545 		}
52546 		ZEND_VM_SMART_BRANCH(result, 0);
52547 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
52548 		ZEND_VM_NEXT_OPCODE();
52549 	} while (0);
52550 
52551 	SAVE_OPLINE();
52552 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
52553 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52554 	}
52555 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
52556 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52557 	}
52558 	result = EX_VAR(opline->result.var);
52559 	compare_function(result, op1, op2);
52560 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
52561 
52562 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52563 }
52564 
52565 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52566 {
52567 	USE_OPLINE
52568 	zend_free_op free_op1;
52569 	zval *container;
52570 	int result;
52571 	zend_ulong hval;
52572 	zval *offset;
52573 
52574 	SAVE_OPLINE();
52575 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52576 	offset = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52577 
52578 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
52579 		HashTable *ht;
52580 		zval *value;
52581 		zend_string *str;
52582 
52583 isset_dim_obj_array:
52584 		ht = Z_ARRVAL_P(container);
52585 isset_again:
52586 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
52587 			str = Z_STR_P(offset);
52588 			if (IS_CV != IS_CONST) {
52589 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
52590 					goto num_index_prop;
52591 				}
52592 			}
52593 str_index_prop:
52594 			value = zend_hash_find_ind(ht, str);
52595 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
52596 			hval = Z_LVAL_P(offset);
52597 num_index_prop:
52598 			value = zend_hash_index_find(ht, hval);
52599 		} else if ((IS_CV & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
52600 			offset = Z_REFVAL_P(offset);
52601 			goto isset_again;
52602 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
52603 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
52604 			goto num_index_prop;
52605 		} else if (Z_TYPE_P(offset) == IS_NULL) {
52606 			str = ZSTR_EMPTY_ALLOC();
52607 			goto str_index_prop;
52608 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
52609 			hval = 0;
52610 			goto num_index_prop;
52611 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
52612 			hval = 1;
52613 			goto num_index_prop;
52614 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
52615 			hval = Z_RES_HANDLE_P(offset);
52616 			goto num_index_prop;
52617 		} else if (IS_CV == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
52618 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
52619 			str = ZSTR_EMPTY_ALLOC();
52620 			goto str_index_prop;
52621 		} else {
52622 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
52623 			goto isset_not_found;
52624 		}
52625 
52626 		if (opline->extended_value & ZEND_ISSET) {
52627 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
52628 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
52629 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
52630 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
52631 			result = (value == NULL || !i_zend_is_true(value));
52632 		}
52633 		goto isset_dim_obj_exit;
52634 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
52635 		container = Z_REFVAL_P(container);
52636 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
52637 			goto isset_dim_obj_array;
52638 		}
52639 	}
52640 
52641 	if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
52642 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
52643 	}
52644 
52645 	if (((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
52646 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
52647 			result =
52648 				((opline->extended_value & ZEND_ISSET) == 0) ^
52649 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
52650 		} else {
52651 			zend_error(E_NOTICE, "Trying to check element of non-array");
52652 			goto isset_not_found;
52653 		}
52654 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
52655 		zend_long lval;
52656 
52657 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
52658 			lval = Z_LVAL_P(offset);
52659 isset_str_offset:
52660 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
52661 				lval += (zend_long)Z_STRLEN_P(container);
52662 			}
52663 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
52664 				if (opline->extended_value & ZEND_ISSET) {
52665 					result = 1;
52666 				} else {
52667 					result = (Z_STRVAL_P(container)[lval] == '0');
52668 				}
52669 			} else {
52670 				goto isset_not_found;
52671 			}
52672 		} else {
52673 			if (IS_CV & (IS_CV|IS_VAR)) {
52674 				ZVAL_DEREF(offset);
52675 			}
52676 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
52677 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
52678 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
52679 				lval = zval_get_long(offset);
52680 				goto isset_str_offset;
52681 			}
52682 			goto isset_not_found;
52683 		}
52684 	} else {
52685 isset_not_found:
52686 		result = ((opline->extended_value & ZEND_ISSET) == 0);
52687 	}
52688 
52689 isset_dim_obj_exit:
52690 
52691 	zval_ptr_dtor_nogc(free_op1);
52692 	ZEND_VM_SMART_BRANCH(result, 1);
52693 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
52694 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52695 }
52696 
52697 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52698 {
52699 	USE_OPLINE
52700 	zend_free_op free_op1;
52701 	zval *container;
52702 	int result;
52703 	zval *offset;
52704 
52705 	SAVE_OPLINE();
52706 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52707 
52708 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
52709 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
52710 	}
52711 
52712 	offset = _get_zval_ptr_cv_BP_VAR_R(opline->op2.var EXECUTE_DATA_CC);
52713 
52714 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
52715 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
52716 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
52717 			container = Z_REFVAL_P(container);
52718 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
52719 				goto isset_no_object;
52720 			}
52721 		} else {
52722 			goto isset_no_object;
52723 		}
52724 	}
52725 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
52726 		zend_string *property_name = zval_get_string(offset);
52727 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
52728 		zend_string_release(property_name);
52729 isset_no_object:
52730 		result = ((opline->extended_value & ZEND_ISSET) == 0);
52731 	} else {
52732 		result =
52733 			((opline->extended_value & ZEND_ISSET) == 0) ^
52734 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, ((IS_CV == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
52735 	}
52736 
52737 	zval_ptr_dtor_nogc(free_op1);
52738 	ZEND_VM_SMART_BRANCH(result, 1);
52739 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
52740 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52741 }
52742 
52743 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52744 {
52745 	USE_OPLINE
52746 	zend_free_op free_op1;
52747 	zval *container, *dim, *value;
52748 	zend_long offset;
52749 
52750 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52751 	dim = _get_zval_ptr_cv_undef(opline->op2.var EXECUTE_DATA_CC);
52752 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
52753 fetch_dim_r_index_array:
52754 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
52755 			offset = Z_LVAL_P(dim);
52756 		} else {
52757 			offset = zval_get_long(dim);
52758 		}
52759 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
52760 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
52761 		if ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) {
52762 			SAVE_OPLINE();
52763 			zval_ptr_dtor_nogc(free_op1);
52764 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52765 		} else {
52766 			ZEND_VM_NEXT_OPCODE();
52767 		}
52768 	} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
52769 		container = Z_REFVAL_P(container);
52770 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
52771 			goto fetch_dim_r_index_array;
52772 		} else {
52773 			goto fetch_dim_r_index_slow;
52774 		}
52775 	} else {
52776 fetch_dim_r_index_slow:
52777 		SAVE_OPLINE();
52778 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
52779 		zval_ptr_dtor_nogc(free_op1);
52780 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52781 	}
52782 
52783 fetch_dim_r_index_undef:
52784 	ZVAL_NULL(EX_VAR(opline->result.var));
52785 	SAVE_OPLINE();
52786 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
52787 	zval_ptr_dtor_nogc(free_op1);
52788 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52789 }
52790 
52791 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52792 {
52793 	USE_OPLINE
52794 	zend_free_op free_op1, free_op2;
52795 	zval *op1, *op2, *result;
52796 
52797 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52798 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
52799 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
52800 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52801 			result = EX_VAR(opline->result.var);
52802 			fast_long_add_function(result, op1, op2);
52803 			ZEND_VM_NEXT_OPCODE();
52804 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
52805 			result = EX_VAR(opline->result.var);
52806 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) + Z_DVAL_P(op2));
52807 			ZEND_VM_NEXT_OPCODE();
52808 		}
52809 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
52810 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
52811 			result = EX_VAR(opline->result.var);
52812 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
52813 			ZEND_VM_NEXT_OPCODE();
52814 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52815 			result = EX_VAR(opline->result.var);
52816 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) + ((double)Z_LVAL_P(op2)));
52817 			ZEND_VM_NEXT_OPCODE();
52818 		}
52819 	}
52820 
52821 	SAVE_OPLINE();
52822 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52823 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52824 	}
52825 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52826 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52827 	}
52828 	add_function(EX_VAR(opline->result.var), op1, op2);
52829 	zval_ptr_dtor_nogc(free_op1);
52830 	zval_ptr_dtor_nogc(free_op2);
52831 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52832 }
52833 
52834 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52835 {
52836 	USE_OPLINE
52837 	zend_free_op free_op1, free_op2;
52838 	zval *op1, *op2, *result;
52839 
52840 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52841 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
52842 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
52843 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52844 			result = EX_VAR(opline->result.var);
52845 			fast_long_sub_function(result, op1, op2);
52846 			ZEND_VM_NEXT_OPCODE();
52847 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
52848 			result = EX_VAR(opline->result.var);
52849 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) - Z_DVAL_P(op2));
52850 			ZEND_VM_NEXT_OPCODE();
52851 		}
52852 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
52853 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
52854 			result = EX_VAR(opline->result.var);
52855 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
52856 			ZEND_VM_NEXT_OPCODE();
52857 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52858 			result = EX_VAR(opline->result.var);
52859 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) - ((double)Z_LVAL_P(op2)));
52860 			ZEND_VM_NEXT_OPCODE();
52861 		}
52862 	}
52863 
52864 	SAVE_OPLINE();
52865 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52866 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52867 	}
52868 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52869 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52870 	}
52871 	sub_function(EX_VAR(opline->result.var), op1, op2);
52872 	zval_ptr_dtor_nogc(free_op1);
52873 	zval_ptr_dtor_nogc(free_op2);
52874 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52875 }
52876 
52877 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52878 {
52879 	USE_OPLINE
52880 	zend_free_op free_op1, free_op2;
52881 	zval *op1, *op2, *result;
52882 
52883 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52884 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
52885 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
52886 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52887 			zend_long overflow;
52888 
52889 			result = EX_VAR(opline->result.var);
52890 			ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
52891 			Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
52892 			ZEND_VM_NEXT_OPCODE();
52893 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
52894 			result = EX_VAR(opline->result.var);
52895 			ZVAL_DOUBLE(result, ((double)Z_LVAL_P(op1)) * Z_DVAL_P(op2));
52896 			ZEND_VM_NEXT_OPCODE();
52897 		}
52898 	} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
52899 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
52900 			result = EX_VAR(opline->result.var);
52901 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
52902 			ZEND_VM_NEXT_OPCODE();
52903 		} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52904 			result = EX_VAR(opline->result.var);
52905 			ZVAL_DOUBLE(result, Z_DVAL_P(op1) * ((double)Z_LVAL_P(op2)));
52906 			ZEND_VM_NEXT_OPCODE();
52907 		}
52908 	}
52909 
52910 	SAVE_OPLINE();
52911 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52912 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52913 	}
52914 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52915 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52916 	}
52917 	mul_function(EX_VAR(opline->result.var), op1, op2);
52918 	zval_ptr_dtor_nogc(free_op1);
52919 	zval_ptr_dtor_nogc(free_op2);
52920 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52921 }
52922 
52923 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52924 {
52925 	USE_OPLINE
52926 	zend_free_op free_op1, free_op2;
52927 	zval *op1, *op2;
52928 
52929 	SAVE_OPLINE();
52930 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52931 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
52932 	fast_div_function(EX_VAR(opline->result.var), op1, op2);
52933 	zval_ptr_dtor_nogc(free_op1);
52934 	zval_ptr_dtor_nogc(free_op2);
52935 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52936 }
52937 
52938 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52939 {
52940 	USE_OPLINE
52941 	zend_free_op free_op1, free_op2;
52942 	zval *op1, *op2, *result;
52943 
52944 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52945 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
52946 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
52947 		if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
52948 			result = EX_VAR(opline->result.var);
52949 			if (UNEXPECTED(Z_LVAL_P(op2) == 0)) {
52950 				SAVE_OPLINE();
52951 				zend_throw_exception_ex(zend_ce_division_by_zero_error, 0, "Modulo by zero");
52952 				ZVAL_UNDEF(EX_VAR(opline->result.var));
52953 				HANDLE_EXCEPTION();
52954 			} else if (UNEXPECTED(Z_LVAL_P(op2) == -1)) {
52955 				/* Prevent overflow error/crash if op1==ZEND_LONG_MIN */
52956 				ZVAL_LONG(result, 0);
52957 			} else {
52958 				ZVAL_LONG(result, Z_LVAL_P(op1) % Z_LVAL_P(op2));
52959 			}
52960 			ZEND_VM_NEXT_OPCODE();
52961 		}
52962 	}
52963 
52964 	SAVE_OPLINE();
52965 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52966 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52967 	}
52968 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52969 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52970 	}
52971 	mod_function(EX_VAR(opline->result.var), op1, op2);
52972 	zval_ptr_dtor_nogc(free_op1);
52973 	zval_ptr_dtor_nogc(free_op2);
52974 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
52975 }
52976 
52977 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
52978 {
52979 	USE_OPLINE
52980 	zend_free_op free_op1, free_op2;
52981 	zval *op1, *op2;
52982 
52983 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
52984 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
52985 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
52986 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
52987 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
52988 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) << Z_LVAL_P(op2));
52989 		ZEND_VM_NEXT_OPCODE();
52990 	}
52991 
52992 	SAVE_OPLINE();
52993 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
52994 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
52995 	}
52996 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
52997 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
52998 	}
52999 	shift_left_function(EX_VAR(opline->result.var), op1, op2);
53000 	zval_ptr_dtor_nogc(free_op1);
53001 	zval_ptr_dtor_nogc(free_op2);
53002 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53003 }
53004 
53005 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53006 {
53007 	USE_OPLINE
53008 	zend_free_op free_op1, free_op2;
53009 	zval *op1, *op2;
53010 
53011 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53012 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53013 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
53014 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)
53015 			&& EXPECTED((zend_ulong)Z_LVAL_P(op2) < SIZEOF_ZEND_LONG * 8)) {
53016 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) >> Z_LVAL_P(op2));
53017 		ZEND_VM_NEXT_OPCODE();
53018 	}
53019 
53020 	SAVE_OPLINE();
53021 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
53022 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53023 	}
53024 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
53025 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53026 	}
53027 	shift_right_function(EX_VAR(opline->result.var), op1, op2);
53028 	zval_ptr_dtor_nogc(free_op1);
53029 	zval_ptr_dtor_nogc(free_op2);
53030 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53031 }
53032 
53033 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53034 {
53035 	USE_OPLINE
53036 	zend_free_op free_op1, free_op2;
53037 	zval *op1, *op2;
53038 
53039 	SAVE_OPLINE();
53040 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53041 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53042 	pow_function(EX_VAR(opline->result.var), op1, op2);
53043 	zval_ptr_dtor_nogc(free_op1);
53044 	zval_ptr_dtor_nogc(free_op2);
53045 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53046 }
53047 
53048 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53049 {
53050 	USE_OPLINE
53051 	zend_free_op free_op1, free_op2;
53052 	zval *op1, *op2;
53053 
53054 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53055 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53056 
53057 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
53058 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
53059 		zend_string *op1_str = Z_STR_P(op1);
53060 		zend_string *op2_str = Z_STR_P(op2);
53061 		zend_string *str;
53062 
53063 		do {
53064 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53065 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
53066 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
53067 					zval_ptr_dtor_nogc(free_op1);
53068 					break;
53069 				}
53070 			}
53071 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53072 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
53073 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
53074 					zval_ptr_dtor_nogc(free_op1);
53075 					break;
53076 				}
53077 			}
53078 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
53079 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
53080 			    size_t len = ZSTR_LEN(op1_str);
53081 
53082 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
53083 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
53084 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
53085 				break;
53086 			} else {
53087 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
53088 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
53089 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
53090 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
53091 			}
53092 			zval_ptr_dtor_nogc(free_op1);
53093 		} while (0);
53094 		zval_ptr_dtor_nogc(free_op2);
53095 		ZEND_VM_NEXT_OPCODE();
53096 	} else {
53097 		SAVE_OPLINE();
53098 
53099 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
53100 			op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53101 		}
53102 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
53103 			op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53104 		}
53105 		concat_function(EX_VAR(opline->result.var), op1, op2);
53106 		zval_ptr_dtor_nogc(free_op1);
53107 		zval_ptr_dtor_nogc(free_op2);
53108 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53109 	}
53110 }
53111 
53112 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53113 {
53114 	USE_OPLINE
53115 	zend_free_op free_op1, free_op2;
53116 	zval *op1, *op2, *result;
53117 
53118 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53119 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53120 	do {
53121 		int result;
53122 
53123 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
53124 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
53125 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
53126 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
53127 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
53128 			} else {
53129 				break;
53130 			}
53131 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
53132 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
53133 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
53134 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
53135 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
53136 			} else {
53137 				break;
53138 			}
53139 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
53140 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
53141 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
53142 					result = 1;
53143 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
53144 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
53145 						result = 0;
53146 					} else {
53147 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
53148 					}
53149 				} else {
53150 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
53151 				}
53152 				zval_ptr_dtor_nogc(free_op1);
53153 				zval_ptr_dtor_nogc(free_op2);
53154 			} else {
53155 				break;
53156 			}
53157 		} else {
53158 			break;
53159 		}
53160 		ZEND_VM_SMART_BRANCH(result, 0);
53161 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
53162 		ZEND_VM_NEXT_OPCODE();
53163 	} while (0);
53164 
53165 	SAVE_OPLINE();
53166 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
53167 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53168 	}
53169 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
53170 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53171 	}
53172 	result = EX_VAR(opline->result.var);
53173 	compare_function(result, op1, op2);
53174 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
53175 	zval_ptr_dtor_nogc(free_op1);
53176 	zval_ptr_dtor_nogc(free_op2);
53177 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53178 }
53179 
53180 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53181 {
53182 	USE_OPLINE
53183 	zend_free_op free_op1, free_op2;
53184 	zval *op1, *op2, *result;
53185 
53186 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53187 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53188 	do {
53189 		int result;
53190 
53191 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
53192 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
53193 				result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
53194 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
53195 				result = ((double)Z_LVAL_P(op1) != Z_DVAL_P(op2));
53196 			} else {
53197 				break;
53198 			}
53199 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
53200 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
53201 				result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
53202 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
53203 				result = (Z_DVAL_P(op1) != ((double)Z_LVAL_P(op2)));
53204 			} else {
53205 				break;
53206 			}
53207 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
53208 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
53209 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
53210 					result = 0;
53211 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
53212 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
53213 						result = 1;
53214 					} else {
53215 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) != 0);
53216 					}
53217 				} else {
53218 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) != 0);
53219 				}
53220 				zval_ptr_dtor_nogc(free_op1);
53221 				zval_ptr_dtor_nogc(free_op2);
53222 			} else {
53223 				break;
53224 			}
53225 		} else {
53226 			break;
53227 		}
53228 		ZEND_VM_SMART_BRANCH(result, 0);
53229 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
53230 		ZEND_VM_NEXT_OPCODE();
53231 	} while (0);
53232 
53233 	SAVE_OPLINE();
53234 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
53235 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53236 	}
53237 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
53238 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53239 	}
53240 	result = EX_VAR(opline->result.var);
53241 	compare_function(result, op1, op2);
53242 	ZVAL_BOOL(result, Z_LVAL_P(result) != 0);
53243 	zval_ptr_dtor_nogc(free_op1);
53244 	zval_ptr_dtor_nogc(free_op2);
53245 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53246 }
53247 
53248 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53249 {
53250 	USE_OPLINE
53251 	zend_free_op free_op1, free_op2;
53252 	zval *op1, *op2, *result;
53253 
53254 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53255 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53256 	do {
53257 		int result;
53258 
53259 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
53260 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
53261 				result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
53262 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
53263 				result = ((double)Z_LVAL_P(op1) < Z_DVAL_P(op2));
53264 			} else {
53265 				break;
53266 			}
53267 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
53268 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
53269 				result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
53270 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
53271 				result = (Z_DVAL_P(op1) < ((double)Z_LVAL_P(op2)));
53272 			} else {
53273 				break;
53274 			}
53275 		} else {
53276 			break;
53277 		}
53278 		ZEND_VM_SMART_BRANCH(result, 0);
53279 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
53280 		ZEND_VM_NEXT_OPCODE();
53281 	} while (0);
53282 
53283 	SAVE_OPLINE();
53284 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
53285 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53286 	}
53287 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
53288 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53289 	}
53290 	result = EX_VAR(opline->result.var);
53291 	compare_function(result, op1, op2);
53292 	ZVAL_BOOL(result, Z_LVAL_P(result) < 0);
53293 	zval_ptr_dtor_nogc(free_op1);
53294 	zval_ptr_dtor_nogc(free_op2);
53295 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53296 }
53297 
53298 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53299 {
53300 	USE_OPLINE
53301 	zend_free_op free_op1, free_op2;
53302 	zval *op1, *op2, *result;
53303 
53304 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53305 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53306 	do {
53307 		int result;
53308 
53309 		if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)) {
53310 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
53311 				result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
53312 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
53313 				result = ((double)Z_LVAL_P(op1) <= Z_DVAL_P(op2));
53314 			} else {
53315 				break;
53316 			}
53317 		} else if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_DOUBLE)) {
53318 			if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_DOUBLE)) {
53319 				result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
53320 			} else if (EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
53321 				result = (Z_DVAL_P(op1) <= ((double)Z_LVAL_P(op2)));
53322 			} else {
53323 				break;
53324 			}
53325 		} else {
53326 			break;
53327 		}
53328 		ZEND_VM_SMART_BRANCH(result, 0);
53329 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
53330 		ZEND_VM_NEXT_OPCODE();
53331 	} while (0);
53332 
53333 	SAVE_OPLINE();
53334 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
53335 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53336 	}
53337 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
53338 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53339 	}
53340 	result = EX_VAR(opline->result.var);
53341 	compare_function(result, op1, op2);
53342 	ZVAL_BOOL(result, Z_LVAL_P(result) <= 0);
53343 	zval_ptr_dtor_nogc(free_op1);
53344 	zval_ptr_dtor_nogc(free_op2);
53345 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53346 }
53347 
53348 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53349 {
53350 	USE_OPLINE
53351 	zend_free_op free_op1, free_op2;
53352 	zval *op1, *op2;
53353 
53354 	SAVE_OPLINE();
53355 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53356 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53357 	compare_function(EX_VAR(opline->result.var), op1, op2);
53358 	zval_ptr_dtor_nogc(free_op1);
53359 	zval_ptr_dtor_nogc(free_op2);
53360 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53361 }
53362 
53363 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53364 {
53365 	USE_OPLINE
53366 	zend_free_op free_op1, free_op2;
53367 	zval *op1, *op2;
53368 
53369 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53370 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53371 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
53372 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
53373 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) | Z_LVAL_P(op2));
53374 		ZEND_VM_NEXT_OPCODE();
53375 	}
53376 
53377 	SAVE_OPLINE();
53378 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
53379 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53380 	}
53381 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
53382 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53383 	}
53384 	bitwise_or_function(EX_VAR(opline->result.var), op1, op2);
53385 	zval_ptr_dtor_nogc(free_op1);
53386 	zval_ptr_dtor_nogc(free_op2);
53387 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53388 }
53389 
53390 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53391 {
53392 	USE_OPLINE
53393 	zend_free_op free_op1, free_op2;
53394 	zval *op1, *op2;
53395 
53396 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53397 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53398 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
53399 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
53400 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) & Z_LVAL_P(op2));
53401 		ZEND_VM_NEXT_OPCODE();
53402 	}
53403 
53404 	SAVE_OPLINE();
53405 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
53406 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53407 	}
53408 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
53409 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53410 	}
53411 	bitwise_and_function(EX_VAR(opline->result.var), op1, op2);
53412 	zval_ptr_dtor_nogc(free_op1);
53413 	zval_ptr_dtor_nogc(free_op2);
53414 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53415 }
53416 
53417 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53418 {
53419 	USE_OPLINE
53420 	zend_free_op free_op1, free_op2;
53421 	zval *op1, *op2;
53422 
53423 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53424 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53425 	if (EXPECTED(Z_TYPE_INFO_P(op1) == IS_LONG)
53426 			&& EXPECTED(Z_TYPE_INFO_P(op2) == IS_LONG)) {
53427 		ZVAL_LONG(EX_VAR(opline->result.var), Z_LVAL_P(op1) ^ Z_LVAL_P(op2));
53428 		ZEND_VM_NEXT_OPCODE();
53429 	}
53430 
53431 	SAVE_OPLINE();
53432 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op1) == IS_UNDEF)) {
53433 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53434 	}
53435 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_INFO_P(op2) == IS_UNDEF)) {
53436 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53437 	}
53438 	bitwise_xor_function(EX_VAR(opline->result.var), op1, op2);
53439 	zval_ptr_dtor_nogc(free_op1);
53440 	zval_ptr_dtor_nogc(free_op2);
53441 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53442 }
53443 
53444 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53445 {
53446 	USE_OPLINE
53447 	zend_free_op free_op1, free_op2;
53448 	zval *op1, *op2;
53449 
53450 	SAVE_OPLINE();
53451 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53452 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53453 	boolean_xor_function(EX_VAR(opline->result.var), op1, op2);
53454 	zval_ptr_dtor_nogc(free_op1);
53455 	zval_ptr_dtor_nogc(free_op2);
53456 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53457 }
53458 
53459 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53460 {
53461 	USE_OPLINE
53462 	zend_free_op free_op1, free_op2;
53463 	zval *container, *dim, *value, *result;
53464 
53465 	SAVE_OPLINE();
53466 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53467 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53468 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53469 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
53470 fetch_dim_r_array:
53471 			value = zend_fetch_dimension_address_inner(Z_ARRVAL_P(container), dim, (IS_TMP_VAR|IS_VAR), BP_VAR_R EXECUTE_DATA_CC);
53472 			result = EX_VAR(opline->result.var);
53473 			ZVAL_COPY_UNREF(result, value);
53474 		} else if (EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
53475 			container = Z_REFVAL_P(container);
53476 			if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
53477 				goto fetch_dim_r_array;
53478 			} else {
53479 				goto fetch_dim_r_slow;
53480 			}
53481 		} else {
53482 fetch_dim_r_slow:
53483 			result = EX_VAR(opline->result.var);
53484 			zend_fetch_dimension_address_read_R_slow(result, container, dim EXECUTE_DATA_CC);
53485 		}
53486 	} else {
53487 		result = EX_VAR(opline->result.var);
53488 		zend_fetch_dimension_address_read_R(result, container, dim, (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
53489 	}
53490 	zval_ptr_dtor_nogc(free_op2);
53491 	zval_ptr_dtor_nogc(free_op1);
53492 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53493 }
53494 
53495 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53496 {
53497 	USE_OPLINE
53498 	zend_free_op free_op1, free_op2;
53499 	zval *container;
53500 
53501 	SAVE_OPLINE();
53502 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53503 	zend_fetch_dimension_address_read_IS(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC), (IS_TMP_VAR|IS_VAR) EXECUTE_DATA_CC);
53504 	zval_ptr_dtor_nogc(free_op2);
53505 	zval_ptr_dtor_nogc(free_op1);
53506 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53507 }
53508 
53509 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53510 {
53511 	USE_OPLINE
53512 	zend_free_op free_op1;
53513 	zval *container;
53514 	zend_free_op free_op2;
53515 	zval *offset;
53516 
53517 	SAVE_OPLINE();
53518 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53519 
53520 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
53521 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
53522 	}
53523 
53524 	offset  = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53525 
53526 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
53527 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
53528 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
53529 			container = Z_REFVAL_P(container);
53530 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
53531 				goto fetch_obj_is_no_object;
53532 			}
53533 		} else {
53534 			goto fetch_obj_is_no_object;
53535 		}
53536 	}
53537 
53538 	/* here we are sure we are dealing with an object */
53539 	do {
53540 		zend_object *zobj = Z_OBJ_P(container);
53541 		zval *retval;
53542 
53543 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
53544 			EXPECTED(zobj->ce == CACHED_PTR(Z_CACHE_SLOT_P(offset)))) {
53545 			uint32_t prop_offset = (uint32_t)(intptr_t)CACHED_PTR(Z_CACHE_SLOT_P(offset) + sizeof(void*));
53546 
53547 			if (EXPECTED(prop_offset != (uint32_t)ZEND_DYNAMIC_PROPERTY_OFFSET)) {
53548 				retval = OBJ_PROP(zobj, prop_offset);
53549 				if (EXPECTED(Z_TYPE_P(retval) != IS_UNDEF)) {
53550 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
53551 					break;
53552 				}
53553 			} else if (EXPECTED(zobj->properties != NULL)) {
53554 				retval = zend_hash_find(zobj->properties, Z_STR_P(offset));
53555 				if (EXPECTED(retval)) {
53556 					ZVAL_COPY(EX_VAR(opline->result.var), retval);
53557 					break;
53558 				}
53559 			}
53560 		}
53561 
53562 		if (UNEXPECTED(zobj->handlers->read_property == NULL)) {
53563 fetch_obj_is_no_object:
53564 			ZVAL_NULL(EX_VAR(opline->result.var));
53565 		} else {
53566 
53567 			retval = zobj->handlers->read_property(container, offset, BP_VAR_IS, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL), EX_VAR(opline->result.var));
53568 
53569 			if (retval != EX_VAR(opline->result.var)) {
53570 				ZVAL_COPY(EX_VAR(opline->result.var), retval);
53571 			}
53572 		}
53573 	} while (0);
53574 
53575 	zval_ptr_dtor_nogc(free_op2);
53576 	zval_ptr_dtor_nogc(free_op1);
53577 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53578 }
53579 
53580 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53581 {
53582 	USE_OPLINE
53583 	zend_free_op free_op1, free_op2;
53584 	zval *container;
53585 
53586 	SAVE_OPLINE();
53587 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53588 	zend_fetch_dimension_address_read_LIST(EX_VAR(opline->result.var), container, _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC) EXECUTE_DATA_CC);
53589 	zval_ptr_dtor_nogc(free_op2);
53590 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53591 }
53592 
53593 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53594 {
53595 	USE_OPLINE
53596 	zend_free_op free_op1, free_op2;
53597 	zval *op1, *op2;
53598 	zend_string *op1_str, *op2_str, *str;
53599 
53600 
53601 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53602 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53603 	if (((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op1) == IS_STRING)) &&
53604 	    ((IS_TMP_VAR|IS_VAR) == IS_CONST || EXPECTED(Z_TYPE_P(op2) == IS_STRING))) {
53605 		zend_string *op1_str = Z_STR_P(op1);
53606 		zend_string *op2_str = Z_STR_P(op2);
53607 		zend_string *str;
53608 
53609 		do {
53610 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53611 				if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
53612 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op2_str);
53613 					zval_ptr_dtor_nogc(free_op1);
53614 					break;
53615 				}
53616 			}
53617 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53618 				if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
53619 					ZVAL_STR_COPY(EX_VAR(opline->result.var), op1_str);
53620 					zval_ptr_dtor_nogc(free_op1);
53621 					break;
53622 				}
53623 			}
53624 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST && (IS_TMP_VAR|IS_VAR) != IS_CV &&
53625 			    !ZSTR_IS_INTERNED(op1_str) && GC_REFCOUNT(op1_str) == 1) {
53626 			    size_t len = ZSTR_LEN(op1_str);
53627 
53628 				str = zend_string_extend(op1_str, len + ZSTR_LEN(op2_str), 0);
53629 				memcpy(ZSTR_VAL(str) + len, ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
53630 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
53631 				break;
53632 			} else {
53633 				str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
53634 				memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
53635 				memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
53636 				ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
53637 			}
53638 			zval_ptr_dtor_nogc(free_op1);
53639 		} while (0);
53640 		zval_ptr_dtor_nogc(free_op2);
53641 		ZEND_VM_NEXT_OPCODE();
53642 	}
53643 
53644 	SAVE_OPLINE();
53645 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
53646 		op1_str = Z_STR_P(op1);
53647 	} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
53648 		op1_str = zend_string_copy(Z_STR_P(op1));
53649 	} else {
53650 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
53651 			GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53652 		}
53653 		op1_str = _zval_get_string_func(op1);
53654 	}
53655 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
53656 		op2_str = Z_STR_P(op2);
53657 	} else if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
53658 		op2_str = zend_string_copy(Z_STR_P(op2));
53659 	} else {
53660 		if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
53661 			GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53662 		}
53663 		op2_str = _zval_get_string_func(op2);
53664 	}
53665 	do {
53666 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53667 			if (UNEXPECTED(ZSTR_LEN(op1_str) == 0)) {
53668 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
53669 					zend_string_addref(op2_str);
53670 				}
53671 				ZVAL_STR(EX_VAR(opline->result.var), op2_str);
53672 				zend_string_release(op1_str);
53673 				break;
53674 			}
53675 		}
53676 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53677 			if (UNEXPECTED(ZSTR_LEN(op2_str) == 0)) {
53678 				if ((IS_TMP_VAR|IS_VAR) == IS_CONST) {
53679 					zend_string_addref(op1_str);
53680 				}
53681 				ZVAL_STR(EX_VAR(opline->result.var), op1_str);
53682 				zend_string_release(op2_str);
53683 				break;
53684 			}
53685 		}
53686 		str = zend_string_alloc(ZSTR_LEN(op1_str) + ZSTR_LEN(op2_str), 0);
53687 		memcpy(ZSTR_VAL(str), ZSTR_VAL(op1_str), ZSTR_LEN(op1_str));
53688 		memcpy(ZSTR_VAL(str) + ZSTR_LEN(op1_str), ZSTR_VAL(op2_str), ZSTR_LEN(op2_str)+1);
53689 		ZVAL_NEW_STR(EX_VAR(opline->result.var), str);
53690 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53691 			zend_string_release(op1_str);
53692 		}
53693 		if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53694 			zend_string_release(op2_str);
53695 		}
53696 	} while (0);
53697 	zval_ptr_dtor_nogc(free_op1);
53698 	zval_ptr_dtor_nogc(free_op2);
53699 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53700 }
53701 
53702 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53703 {
53704 	USE_OPLINE
53705 	zval *function_name;
53706 	zend_free_op free_op1, free_op2;
53707 	zval *object;
53708 	zend_function *fbc;
53709 	zend_class_entry *called_scope;
53710 	zend_object *obj;
53711 	zend_execute_data *call;
53712 	uint32_t call_info;
53713 
53714 	SAVE_OPLINE();
53715 
53716 	object = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53717 
53718 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
53719 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
53720 	}
53721 
53722 	function_name = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53723 
53724 	if ((IS_TMP_VAR|IS_VAR) != IS_CONST &&
53725 	    UNEXPECTED(Z_TYPE_P(function_name) != IS_STRING)) {
53726 		do {
53727 			if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(function_name)) {
53728 				function_name = Z_REFVAL_P(function_name);
53729 				if (EXPECTED(Z_TYPE_P(function_name) == IS_STRING)) {
53730 					break;
53731 				}
53732 			} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(function_name) == IS_UNDEF)) {
53733 				GET_OP2_UNDEF_CV(function_name, BP_VAR_R);
53734 				if (UNEXPECTED(EG(exception) != NULL)) {
53735 					zval_ptr_dtor_nogc(free_op1);
53736 					HANDLE_EXCEPTION();
53737 				}
53738 			}
53739 			zend_throw_error(NULL, "Method name must be a string");
53740 			zval_ptr_dtor_nogc(free_op2);
53741 			zval_ptr_dtor_nogc(free_op1);
53742 			HANDLE_EXCEPTION();
53743 		} while (0);
53744 	}
53745 
53746 	if ((IS_TMP_VAR|IS_VAR) != IS_UNUSED) {
53747 		do {
53748 			if ((IS_TMP_VAR|IS_VAR) == IS_CONST || UNEXPECTED(Z_TYPE_P(object) != IS_OBJECT)) {
53749 				if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(object))) {
53750 					object = Z_REFVAL_P(object);
53751 					if (EXPECTED(Z_TYPE_P(object) == IS_OBJECT)) {
53752 						break;
53753 					}
53754 				}
53755 				if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(object) == IS_UNDEF)) {
53756 					object = GET_OP1_UNDEF_CV(object, BP_VAR_R);
53757 					if (UNEXPECTED(EG(exception) != NULL)) {
53758 						zval_ptr_dtor_nogc(free_op2);
53759 						HANDLE_EXCEPTION();
53760 					}
53761 				}
53762 				zend_throw_error(NULL, "Call to a member function %s() on %s", Z_STRVAL_P(function_name), zend_get_type_by_const(Z_TYPE_P(object)));
53763 				zval_ptr_dtor_nogc(free_op2);
53764 				zval_ptr_dtor_nogc(free_op1);
53765 				HANDLE_EXCEPTION();
53766 			}
53767 		} while (0);
53768 	}
53769 
53770 	obj = Z_OBJ_P(object);
53771 	called_scope = obj->ce;
53772 
53773 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
53774 	    EXPECTED(CACHED_PTR(Z_CACHE_SLOT_P(function_name)) == called_scope)) {
53775 	    fbc = CACHED_PTR(Z_CACHE_SLOT_P(function_name) + sizeof(void*));
53776 	} else {
53777 	    zend_object *orig_obj = obj;
53778 
53779 		if (UNEXPECTED(obj->handlers->get_method == NULL)) {
53780 			zend_throw_error(NULL, "Object does not support method calls");
53781 			zval_ptr_dtor_nogc(free_op2);
53782 			zval_ptr_dtor_nogc(free_op1);
53783 			HANDLE_EXCEPTION();
53784 		}
53785 
53786 		/* First, locate the function. */
53787 		fbc = obj->handlers->get_method(&obj, Z_STR_P(function_name), (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? (EX_CONSTANT(opline->op2) + 1) : NULL));
53788 		if (UNEXPECTED(fbc == NULL)) {
53789 			if (EXPECTED(!EG(exception))) {
53790 				zend_throw_error(NULL, "Call to undefined method %s::%s()", ZSTR_VAL(obj->ce->name), Z_STRVAL_P(function_name));
53791 			}
53792 			zval_ptr_dtor_nogc(free_op2);
53793 			zval_ptr_dtor_nogc(free_op1);
53794 			HANDLE_EXCEPTION();
53795 		}
53796 		if ((IS_TMP_VAR|IS_VAR) == IS_CONST &&
53797 		    EXPECTED(fbc->type <= ZEND_USER_FUNCTION) &&
53798 		    EXPECTED(!(fbc->common.fn_flags & (ZEND_ACC_CALL_VIA_TRAMPOLINE|ZEND_ACC_NEVER_CACHE))) &&
53799 		    EXPECTED(obj == orig_obj)) {
53800 			CACHE_POLYMORPHIC_PTR(Z_CACHE_SLOT_P(function_name), called_scope, fbc);
53801 		}
53802 		if (EXPECTED(fbc->type == ZEND_USER_FUNCTION) && UNEXPECTED(!fbc->op_array.run_time_cache)) {
53803 			init_func_run_time_cache(&fbc->op_array);
53804 		}
53805 	}
53806 
53807 	call_info = ZEND_CALL_NESTED_FUNCTION;
53808 	if (UNEXPECTED((fbc->common.fn_flags & ZEND_ACC_STATIC) != 0)) {
53809 		obj = NULL;
53810 	} else if ((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR|IS_CV)) {
53811 		/* CV may be changed indirectly (e.g. when it's a reference) */
53812 		call_info = ZEND_CALL_NESTED_FUNCTION | ZEND_CALL_RELEASE_THIS;
53813 		GC_REFCOUNT(obj)++; /* For $this pointer */
53814 	}
53815 
53816 	zval_ptr_dtor_nogc(free_op2);
53817 	zval_ptr_dtor_nogc(free_op1);
53818 
53819 	if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_TMP_VAR)) && UNEXPECTED(EG(exception))) {
53820 		HANDLE_EXCEPTION();
53821 	}
53822 
53823 	call = zend_vm_stack_push_call_frame(call_info,
53824 		fbc, opline->extended_value, called_scope, obj);
53825 	call->prev_execute_data = EX(call);
53826 	EX(call) = call;
53827 
53828 	ZEND_VM_NEXT_OPCODE();
53829 }
53830 
53831 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53832 {
53833 	USE_OPLINE
53834 	zend_free_op free_op1, free_op2;
53835 	zval *op1, *op2, *result;
53836 
53837 	op1 = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53838 	op2 = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53839 	do {
53840 		int result;
53841 
53842 		if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) {
53843 			if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
53844 				result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
53845 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
53846 				result = ((double)Z_LVAL_P(op1) == Z_DVAL_P(op2));
53847 			} else {
53848 				break;
53849 			}
53850 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_DOUBLE)) {
53851 			if (EXPECTED(Z_TYPE_P(op2) == IS_DOUBLE)) {
53852 				result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
53853 			} else if (EXPECTED(Z_TYPE_P(op2) == IS_LONG)) {
53854 				result = (Z_DVAL_P(op1) == ((double)Z_LVAL_P(op2)));
53855 			} else {
53856 				break;
53857 			}
53858 		} else if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) {
53859 			if (EXPECTED(Z_TYPE_P(op2) == IS_STRING)) {
53860 				if (Z_STR_P(op1) == Z_STR_P(op2)) {
53861 					result = 1;
53862 				} else if (Z_STRVAL_P(op1)[0] > '9' || Z_STRVAL_P(op2)[0] > '9') {
53863 					if (Z_STRLEN_P(op1) != Z_STRLEN_P(op2)) {
53864 						result = 0;
53865 					} else {
53866 						result = (memcmp(Z_STRVAL_P(op1), Z_STRVAL_P(op2), Z_STRLEN_P(op1)) == 0);
53867 					}
53868 				} else {
53869 					result = (zendi_smart_strcmp(Z_STR_P(op1), Z_STR_P(op2)) == 0);
53870 				}
53871 				zval_ptr_dtor_nogc(free_op2);
53872 			} else {
53873 				break;
53874 			}
53875 		} else {
53876 			break;
53877 		}
53878 		ZEND_VM_SMART_BRANCH(result, 0);
53879 		ZVAL_BOOL(EX_VAR(opline->result.var), result);
53880 		ZEND_VM_NEXT_OPCODE();
53881 	} while (0);
53882 
53883 	SAVE_OPLINE();
53884 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op1) == IS_UNDEF)) {
53885 		op1 = GET_OP1_UNDEF_CV(op1, BP_VAR_R);
53886 	}
53887 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(op2) == IS_UNDEF)) {
53888 		op2 = GET_OP2_UNDEF_CV(op2, BP_VAR_R);
53889 	}
53890 	result = EX_VAR(opline->result.var);
53891 	compare_function(result, op1, op2);
53892 	ZVAL_BOOL(result, Z_LVAL_P(result) == 0);
53893 	zval_ptr_dtor_nogc(free_op2);
53894 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
53895 }
53896 
53897 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
53898 {
53899 	USE_OPLINE
53900 	zend_free_op free_op1, free_op2;
53901 	zval *container;
53902 	int result;
53903 	zend_ulong hval;
53904 	zval *offset;
53905 
53906 	SAVE_OPLINE();
53907 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
53908 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
53909 
53910 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
53911 		HashTable *ht;
53912 		zval *value;
53913 		zend_string *str;
53914 
53915 isset_dim_obj_array:
53916 		ht = Z_ARRVAL_P(container);
53917 isset_again:
53918 		if (EXPECTED(Z_TYPE_P(offset) == IS_STRING)) {
53919 			str = Z_STR_P(offset);
53920 			if ((IS_TMP_VAR|IS_VAR) != IS_CONST) {
53921 				if (ZEND_HANDLE_NUMERIC(str, hval)) {
53922 					goto num_index_prop;
53923 				}
53924 			}
53925 str_index_prop:
53926 			value = zend_hash_find_ind(ht, str);
53927 		} else if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
53928 			hval = Z_LVAL_P(offset);
53929 num_index_prop:
53930 			value = zend_hash_index_find(ht, hval);
53931 		} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && EXPECTED(Z_ISREF_P(offset))) {
53932 			offset = Z_REFVAL_P(offset);
53933 			goto isset_again;
53934 		} else if (Z_TYPE_P(offset) == IS_DOUBLE) {
53935 			hval = zend_dval_to_lval(Z_DVAL_P(offset));
53936 			goto num_index_prop;
53937 		} else if (Z_TYPE_P(offset) == IS_NULL) {
53938 			str = ZSTR_EMPTY_ALLOC();
53939 			goto str_index_prop;
53940 		} else if (Z_TYPE_P(offset) == IS_FALSE) {
53941 			hval = 0;
53942 			goto num_index_prop;
53943 		} else if (Z_TYPE_P(offset) == IS_TRUE) {
53944 			hval = 1;
53945 			goto num_index_prop;
53946 		} else if (Z_TYPE_P(offset) == IS_RESOURCE) {
53947 			hval = Z_RES_HANDLE_P(offset);
53948 			goto num_index_prop;
53949 		} else if ((IS_TMP_VAR|IS_VAR) == IS_CV && Z_TYPE_P(offset) == IS_UNDEF) {
53950 			GET_OP2_UNDEF_CV(offset, BP_VAR_R);
53951 			str = ZSTR_EMPTY_ALLOC();
53952 			goto str_index_prop;
53953 		} else {
53954 			zend_error(E_WARNING, "Illegal offset type in isset or empty");
53955 			goto isset_not_found;
53956 		}
53957 
53958 		if (opline->extended_value & ZEND_ISSET) {
53959 			/* > IS_NULL means not IS_UNDEF and not IS_NULL */
53960 			result = value != NULL && Z_TYPE_P(value) > IS_NULL &&
53961 			    (!Z_ISREF_P(value) || Z_TYPE_P(Z_REFVAL_P(value)) != IS_NULL);
53962 		} else /* if (opline->extended_value & ZEND_ISEMPTY) */ {
53963 			result = (value == NULL || !i_zend_is_true(value));
53964 		}
53965 		goto isset_dim_obj_exit;
53966 	} else if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
53967 		container = Z_REFVAL_P(container);
53968 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
53969 			goto isset_dim_obj_array;
53970 		}
53971 	}
53972 
53973 	if ((IS_TMP_VAR|IS_VAR) == IS_CV && UNEXPECTED(Z_TYPE_P(offset) == IS_UNDEF)) {
53974 		offset = GET_OP2_UNDEF_CV(offset, BP_VAR_R);
53975 	}
53976 
53977 	if (((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_OBJECT))) {
53978 		if (EXPECTED(Z_OBJ_HT_P(container)->has_dimension)) {
53979 			result =
53980 				((opline->extended_value & ZEND_ISSET) == 0) ^
53981 				Z_OBJ_HT_P(container)->has_dimension(container, offset, (opline->extended_value & ZEND_ISSET) == 0);
53982 		} else {
53983 			zend_error(E_NOTICE, "Trying to check element of non-array");
53984 			goto isset_not_found;
53985 		}
53986 	} else if (EXPECTED(Z_TYPE_P(container) == IS_STRING)) { /* string offsets */
53987 		zend_long lval;
53988 
53989 		if (EXPECTED(Z_TYPE_P(offset) == IS_LONG)) {
53990 			lval = Z_LVAL_P(offset);
53991 isset_str_offset:
53992 			if (UNEXPECTED(lval < 0)) { /* Handle negative offset */
53993 				lval += (zend_long)Z_STRLEN_P(container);
53994 			}
53995 			if (EXPECTED(lval >= 0) && (size_t)lval < Z_STRLEN_P(container)) {
53996 				if (opline->extended_value & ZEND_ISSET) {
53997 					result = 1;
53998 				} else {
53999 					result = (Z_STRVAL_P(container)[lval] == '0');
54000 				}
54001 			} else {
54002 				goto isset_not_found;
54003 			}
54004 		} else {
54005 			if ((IS_TMP_VAR|IS_VAR) & (IS_CV|IS_VAR)) {
54006 				ZVAL_DEREF(offset);
54007 			}
54008 			if (Z_TYPE_P(offset) < IS_STRING /* simple scalar types */
54009 					|| (Z_TYPE_P(offset) == IS_STRING /* or numeric string */
54010 						&& IS_LONG == is_numeric_string(Z_STRVAL_P(offset), Z_STRLEN_P(offset), NULL, NULL, 0))) {
54011 				lval = zval_get_long(offset);
54012 				goto isset_str_offset;
54013 			}
54014 			goto isset_not_found;
54015 		}
54016 	} else {
54017 isset_not_found:
54018 		result = ((opline->extended_value & ZEND_ISSET) == 0);
54019 	}
54020 
54021 isset_dim_obj_exit:
54022 	zval_ptr_dtor_nogc(free_op2);
54023 	zval_ptr_dtor_nogc(free_op1);
54024 	ZEND_VM_SMART_BRANCH(result, 1);
54025 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54026 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
54027 }
54028 
54029 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54030 {
54031 	USE_OPLINE
54032 	zend_free_op free_op1, free_op2;
54033 	zval *container;
54034 	int result;
54035 	zval *offset;
54036 
54037 	SAVE_OPLINE();
54038 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
54039 
54040 	if ((IS_TMP_VAR|IS_VAR) == IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) == IS_UNDEF)) {
54041 		ZEND_VM_TAIL_CALL(zend_this_not_in_object_context_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU));
54042 	}
54043 
54044 	offset = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
54045 
54046 	if ((IS_TMP_VAR|IS_VAR) == IS_CONST ||
54047 	    ((IS_TMP_VAR|IS_VAR) != IS_UNUSED && UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT))) {
54048 		if (((IS_TMP_VAR|IS_VAR) & (IS_VAR|IS_CV)) && Z_ISREF_P(container)) {
54049 			container = Z_REFVAL_P(container);
54050 			if (UNEXPECTED(Z_TYPE_P(container) != IS_OBJECT)) {
54051 				goto isset_no_object;
54052 			}
54053 		} else {
54054 			goto isset_no_object;
54055 		}
54056 	}
54057 	if (UNEXPECTED(!Z_OBJ_HT_P(container)->has_property)) {
54058 		zend_string *property_name = zval_get_string(offset);
54059 		zend_error(E_NOTICE, "Trying to check property '%s' of non-object", ZSTR_VAL(property_name));
54060 		zend_string_release(property_name);
54061 isset_no_object:
54062 		result = ((opline->extended_value & ZEND_ISSET) == 0);
54063 	} else {
54064 		result =
54065 			((opline->extended_value & ZEND_ISSET) == 0) ^
54066 			Z_OBJ_HT_P(container)->has_property(container, offset, (opline->extended_value & ZEND_ISSET) == 0, (((IS_TMP_VAR|IS_VAR) == IS_CONST) ? CACHE_ADDR(Z_CACHE_SLOT_P(offset)) : NULL));
54067 	}
54068 
54069 	zval_ptr_dtor_nogc(free_op2);
54070 	zval_ptr_dtor_nogc(free_op1);
54071 	ZEND_VM_SMART_BRANCH(result, 1);
54072 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54073 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
54074 }
54075 
54076 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54077 {
54078 	USE_OPLINE
54079 	zend_free_op free_op1, free_op2;
54080 	zval *container, *dim, *value;
54081 	zend_long offset;
54082 
54083 	container = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
54084 	dim = _get_zval_ptr_var(opline->op2.var, &free_op2 EXECUTE_DATA_CC);
54085 	if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
54086 fetch_dim_r_index_array:
54087 		if (EXPECTED(Z_TYPE_P(dim) == IS_LONG)) {
54088 			offset = Z_LVAL_P(dim);
54089 		} else {
54090 			offset = zval_get_long(dim);
54091 		}
54092 		ZEND_HASH_INDEX_FIND(Z_ARRVAL_P(container), offset, value, fetch_dim_r_index_undef);
54093 		ZVAL_COPY_UNREF(EX_VAR(opline->result.var), value);
54094 		if ((IS_TMP_VAR|IS_VAR) & (IS_TMP_VAR|IS_VAR)) {
54095 			SAVE_OPLINE();
54096 			zval_ptr_dtor_nogc(free_op1);
54097 			ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
54098 		} else {
54099 			ZEND_VM_NEXT_OPCODE();
54100 		}
54101 	} else if ((IS_TMP_VAR|IS_VAR) != IS_CONST && EXPECTED(Z_TYPE_P(container) == IS_REFERENCE)) {
54102 		container = Z_REFVAL_P(container);
54103 		if (EXPECTED(Z_TYPE_P(container) == IS_ARRAY)) {
54104 			goto fetch_dim_r_index_array;
54105 		} else {
54106 			goto fetch_dim_r_index_slow;
54107 		}
54108 	} else {
54109 fetch_dim_r_index_slow:
54110 		SAVE_OPLINE();
54111 		zend_fetch_dimension_address_read_R_slow(EX_VAR(opline->result.var), container, dim EXECUTE_DATA_CC);
54112 		zval_ptr_dtor_nogc(free_op1);
54113 		ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
54114 	}
54115 
54116 fetch_dim_r_index_undef:
54117 	ZVAL_NULL(EX_VAR(opline->result.var));
54118 	SAVE_OPLINE();
54119 	zend_error(E_NOTICE, "Undefined offset: " ZEND_LONG_FMT, offset);
54120 	zval_ptr_dtor_nogc(free_op1);
54121 	ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTION();
54122 }
54123 
54124 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54125 {
54126 	USE_OPLINE
54127 
54128 	zval *value;
54129 
54130 	value = EX_VAR(opline->op1.var);
54131 	ZVAL_DOUBLE(EX_VAR(opline->result.var), Z_DVAL_P(value));
54132 	ZEND_VM_NEXT_OPCODE();
54133 }
54134 
54135 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54136 {
54137 	USE_OPLINE
54138 
54139 	zval *value;
54140 
54141 	value = EX_VAR(opline->op1.var);
54142 	ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
54143 	ZEND_VM_NEXT_OPCODE();
54144 }
54145 
54146 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54147 {
54148 	USE_OPLINE
54149 	zval *op1, *op2, *result;
54150 
54151 	op1 = EX_VAR(opline->op1.var);
54152 	op2 = EX_CONSTANT(opline->op2);
54153 	result = EX_VAR(opline->result.var);
54154 	ZVAL_LONG(result, Z_LVAL_P(op1) - Z_LVAL_P(op2));
54155 	ZEND_VM_NEXT_OPCODE();
54156 }
54157 
54158 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54159 {
54160 	USE_OPLINE
54161 	zval *op1, *op2, *result;
54162 
54163 	op1 = EX_VAR(opline->op1.var);
54164 	op2 = EX_CONSTANT(opline->op2);
54165 	result = EX_VAR(opline->result.var);
54166 	fast_long_sub_function(result, op1, op2);
54167 	ZEND_VM_NEXT_OPCODE();
54168 }
54169 
54170 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54171 {
54172 	USE_OPLINE
54173 	zval *op1, *op2, *result;
54174 
54175 	op1 = EX_VAR(opline->op1.var);
54176 	op2 = EX_CONSTANT(opline->op2);
54177 	result = EX_VAR(opline->result.var);
54178 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
54179 	ZEND_VM_NEXT_OPCODE();
54180 }
54181 
54182 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54183 {
54184 	USE_OPLINE
54185 	zval *op1, *op2;
54186 	int result;
54187 
54188 	op1 = EX_VAR(opline->op1.var);
54189 	op2 = EX_CONSTANT(opline->op2);
54190 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
54191 
54192 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54193 	ZEND_VM_NEXT_OPCODE();
54194 }
54195 
54196 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54197 {
54198 	USE_OPLINE
54199 	zval *op1, *op2;
54200 	int result;
54201 
54202 	op1 = EX_VAR(opline->op1.var);
54203 	op2 = EX_CONSTANT(opline->op2);
54204 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
54205 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54206 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54207 	ZEND_VM_NEXT_OPCODE();
54208 }
54209 
54210 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54211 {
54212 	USE_OPLINE
54213 	zval *op1, *op2;
54214 	int result;
54215 
54216 	op1 = EX_VAR(opline->op1.var);
54217 	op2 = EX_CONSTANT(opline->op2);
54218 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
54219 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54220 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54221 	ZEND_VM_NEXT_OPCODE();
54222 }
54223 
54224 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54225 {
54226 	USE_OPLINE
54227 	zval *op1, *op2;
54228 	int result;
54229 
54230 	op1 = EX_VAR(opline->op1.var);
54231 	op2 = EX_CONSTANT(opline->op2);
54232 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
54233 
54234 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54235 	ZEND_VM_NEXT_OPCODE();
54236 }
54237 
54238 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54239 {
54240 	USE_OPLINE
54241 	zval *op1, *op2;
54242 	int result;
54243 
54244 	op1 = EX_VAR(opline->op1.var);
54245 	op2 = EX_CONSTANT(opline->op2);
54246 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
54247 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54248 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54249 	ZEND_VM_NEXT_OPCODE();
54250 }
54251 
54252 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54253 {
54254 	USE_OPLINE
54255 	zval *op1, *op2;
54256 	int result;
54257 
54258 	op1 = EX_VAR(opline->op1.var);
54259 	op2 = EX_CONSTANT(opline->op2);
54260 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
54261 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54262 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54263 	ZEND_VM_NEXT_OPCODE();
54264 }
54265 
54266 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54267 {
54268 	USE_OPLINE
54269 	zval *op1, *op2;
54270 	int result;
54271 
54272 	op1 = EX_VAR(opline->op1.var);
54273 	op2 = EX_CONSTANT(opline->op2);
54274 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
54275 
54276 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54277 	ZEND_VM_NEXT_OPCODE();
54278 }
54279 
54280 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54281 {
54282 	USE_OPLINE
54283 	zval *op1, *op2;
54284 	int result;
54285 
54286 	op1 = EX_VAR(opline->op1.var);
54287 	op2 = EX_CONSTANT(opline->op2);
54288 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
54289 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54290 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54291 	ZEND_VM_NEXT_OPCODE();
54292 }
54293 
54294 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54295 {
54296 	USE_OPLINE
54297 	zval *op1, *op2;
54298 	int result;
54299 
54300 	op1 = EX_VAR(opline->op1.var);
54301 	op2 = EX_CONSTANT(opline->op2);
54302 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
54303 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54304 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54305 	ZEND_VM_NEXT_OPCODE();
54306 }
54307 
54308 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54309 {
54310 	USE_OPLINE
54311 	zval *op1, *op2;
54312 	int result;
54313 
54314 	op1 = EX_VAR(opline->op1.var);
54315 	op2 = EX_CONSTANT(opline->op2);
54316 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
54317 
54318 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54319 	ZEND_VM_NEXT_OPCODE();
54320 }
54321 
54322 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54323 {
54324 	USE_OPLINE
54325 	zval *op1, *op2;
54326 	int result;
54327 
54328 	op1 = EX_VAR(opline->op1.var);
54329 	op2 = EX_CONSTANT(opline->op2);
54330 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
54331 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54332 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54333 	ZEND_VM_NEXT_OPCODE();
54334 }
54335 
54336 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54337 {
54338 	USE_OPLINE
54339 	zval *op1, *op2;
54340 	int result;
54341 
54342 	op1 = EX_VAR(opline->op1.var);
54343 	op2 = EX_CONSTANT(opline->op2);
54344 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
54345 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54346 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54347 	ZEND_VM_NEXT_OPCODE();
54348 }
54349 
54350 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54351 {
54352 	USE_OPLINE
54353 	zval *op1, *op2, *result;
54354 
54355 	op1 = EX_VAR(opline->op1.var);
54356 	op2 = EX_VAR(opline->op2.var);
54357 	result = EX_VAR(opline->result.var);
54358 	ZVAL_LONG(result, Z_LVAL_P(op1) + Z_LVAL_P(op2));
54359 	ZEND_VM_NEXT_OPCODE();
54360 }
54361 
54362 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54363 {
54364 	USE_OPLINE
54365 	zval *op1, *op2, *result;
54366 
54367 	op1 = EX_VAR(opline->op1.var);
54368 	op2 = EX_VAR(opline->op2.var);
54369 	result = EX_VAR(opline->result.var);
54370 	fast_long_add_function(result, op1, op2);
54371 	ZEND_VM_NEXT_OPCODE();
54372 }
54373 
54374 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54375 {
54376 	USE_OPLINE
54377 	zval *op1, *op2, *result;
54378 
54379 	op1 = EX_VAR(opline->op1.var);
54380 	op2 = EX_VAR(opline->op2.var);
54381 	result = EX_VAR(opline->result.var);
54382 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) + Z_DVAL_P(op2));
54383 	ZEND_VM_NEXT_OPCODE();
54384 }
54385 
54386 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54387 {
54388 	USE_OPLINE
54389 	zval *op1, *op2, *result;
54390 
54391 	op1 = EX_VAR(opline->op1.var);
54392 	op2 = EX_VAR(opline->op2.var);
54393 	result = EX_VAR(opline->result.var);
54394 	ZVAL_LONG(result, Z_LVAL_P(op1) - Z_LVAL_P(op2));
54395 	ZEND_VM_NEXT_OPCODE();
54396 }
54397 
54398 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54399 {
54400 	USE_OPLINE
54401 	zval *op1, *op2, *result;
54402 
54403 	op1 = EX_VAR(opline->op1.var);
54404 	op2 = EX_VAR(opline->op2.var);
54405 	result = EX_VAR(opline->result.var);
54406 	fast_long_sub_function(result, op1, op2);
54407 	ZEND_VM_NEXT_OPCODE();
54408 }
54409 
54410 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54411 {
54412 	USE_OPLINE
54413 	zval *op1, *op2, *result;
54414 
54415 	op1 = EX_VAR(opline->op1.var);
54416 	op2 = EX_VAR(opline->op2.var);
54417 	result = EX_VAR(opline->result.var);
54418 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) - Z_DVAL_P(op2));
54419 	ZEND_VM_NEXT_OPCODE();
54420 }
54421 
54422 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54423 {
54424 	USE_OPLINE
54425 	zval *op1, *op2, *result;
54426 
54427 	op1 = EX_VAR(opline->op1.var);
54428 	op2 = EX_VAR(opline->op2.var);
54429 	result = EX_VAR(opline->result.var);
54430 	ZVAL_LONG(result, Z_LVAL_P(op1) * Z_LVAL_P(op2));
54431 	ZEND_VM_NEXT_OPCODE();
54432 }
54433 
54434 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54435 {
54436 	USE_OPLINE
54437 	zval *op1, *op2, *result;
54438 	zend_long overflow;
54439 
54440 	op1 = EX_VAR(opline->op1.var);
54441 	op2 = EX_VAR(opline->op2.var);
54442 	result = EX_VAR(opline->result.var);
54443 	ZEND_SIGNED_MULTIPLY_LONG(Z_LVAL_P(op1), Z_LVAL_P(op2), Z_LVAL_P(result), Z_DVAL_P(result), overflow);
54444 	Z_TYPE_INFO_P(result) = overflow ? IS_DOUBLE : IS_LONG;
54445 	ZEND_VM_NEXT_OPCODE();
54446 }
54447 
54448 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54449 {
54450 	USE_OPLINE
54451 	zval *op1, *op2, *result;
54452 
54453 	op1 = EX_VAR(opline->op1.var);
54454 	op2 = EX_VAR(opline->op2.var);
54455 	result = EX_VAR(opline->result.var);
54456 	ZVAL_DOUBLE(result, Z_DVAL_P(op1) * Z_DVAL_P(op2));
54457 	ZEND_VM_NEXT_OPCODE();
54458 }
54459 
54460 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54461 {
54462 	USE_OPLINE
54463 	zval *op1, *op2;
54464 	int result;
54465 
54466 	op1 = EX_VAR(opline->op1.var);
54467 	op2 = EX_VAR(opline->op2.var);
54468 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
54469 
54470 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54471 	ZEND_VM_NEXT_OPCODE();
54472 }
54473 
54474 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54475 {
54476 	USE_OPLINE
54477 	zval *op1, *op2;
54478 	int result;
54479 
54480 	op1 = EX_VAR(opline->op1.var);
54481 	op2 = EX_VAR(opline->op2.var);
54482 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
54483 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54484 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54485 	ZEND_VM_NEXT_OPCODE();
54486 }
54487 
54488 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54489 {
54490 	USE_OPLINE
54491 	zval *op1, *op2;
54492 	int result;
54493 
54494 	op1 = EX_VAR(opline->op1.var);
54495 	op2 = EX_VAR(opline->op2.var);
54496 	result = (Z_LVAL_P(op1) == Z_LVAL_P(op2));
54497 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54498 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54499 	ZEND_VM_NEXT_OPCODE();
54500 }
54501 
54502 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54503 {
54504 	USE_OPLINE
54505 	zval *op1, *op2;
54506 	int result;
54507 
54508 	op1 = EX_VAR(opline->op1.var);
54509 	op2 = EX_VAR(opline->op2.var);
54510 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
54511 
54512 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54513 	ZEND_VM_NEXT_OPCODE();
54514 }
54515 
54516 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54517 {
54518 	USE_OPLINE
54519 	zval *op1, *op2;
54520 	int result;
54521 
54522 	op1 = EX_VAR(opline->op1.var);
54523 	op2 = EX_VAR(opline->op2.var);
54524 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
54525 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54526 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54527 	ZEND_VM_NEXT_OPCODE();
54528 }
54529 
54530 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54531 {
54532 	USE_OPLINE
54533 	zval *op1, *op2;
54534 	int result;
54535 
54536 	op1 = EX_VAR(opline->op1.var);
54537 	op2 = EX_VAR(opline->op2.var);
54538 	result = (Z_DVAL_P(op1) == Z_DVAL_P(op2));
54539 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54540 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54541 	ZEND_VM_NEXT_OPCODE();
54542 }
54543 
54544 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54545 {
54546 	USE_OPLINE
54547 	zval *op1, *op2;
54548 	int result;
54549 
54550 	op1 = EX_VAR(opline->op1.var);
54551 	op2 = EX_VAR(opline->op2.var);
54552 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
54553 
54554 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54555 	ZEND_VM_NEXT_OPCODE();
54556 }
54557 
54558 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54559 {
54560 	USE_OPLINE
54561 	zval *op1, *op2;
54562 	int result;
54563 
54564 	op1 = EX_VAR(opline->op1.var);
54565 	op2 = EX_VAR(opline->op2.var);
54566 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
54567 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54568 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54569 	ZEND_VM_NEXT_OPCODE();
54570 }
54571 
54572 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54573 {
54574 	USE_OPLINE
54575 	zval *op1, *op2;
54576 	int result;
54577 
54578 	op1 = EX_VAR(opline->op1.var);
54579 	op2 = EX_VAR(opline->op2.var);
54580 	result = (Z_LVAL_P(op1) != Z_LVAL_P(op2));
54581 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54582 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54583 	ZEND_VM_NEXT_OPCODE();
54584 }
54585 
54586 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54587 {
54588 	USE_OPLINE
54589 	zval *op1, *op2;
54590 	int result;
54591 
54592 	op1 = EX_VAR(opline->op1.var);
54593 	op2 = EX_VAR(opline->op2.var);
54594 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
54595 
54596 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54597 	ZEND_VM_NEXT_OPCODE();
54598 }
54599 
54600 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54601 {
54602 	USE_OPLINE
54603 	zval *op1, *op2;
54604 	int result;
54605 
54606 	op1 = EX_VAR(opline->op1.var);
54607 	op2 = EX_VAR(opline->op2.var);
54608 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
54609 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54610 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54611 	ZEND_VM_NEXT_OPCODE();
54612 }
54613 
54614 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54615 {
54616 	USE_OPLINE
54617 	zval *op1, *op2;
54618 	int result;
54619 
54620 	op1 = EX_VAR(opline->op1.var);
54621 	op2 = EX_VAR(opline->op2.var);
54622 	result = (Z_DVAL_P(op1) != Z_DVAL_P(op2));
54623 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54624 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54625 	ZEND_VM_NEXT_OPCODE();
54626 }
54627 
54628 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54629 {
54630 	USE_OPLINE
54631 	zval *op1, *op2;
54632 	int result;
54633 
54634 	op1 = EX_VAR(opline->op1.var);
54635 	op2 = EX_VAR(opline->op2.var);
54636 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
54637 
54638 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54639 	ZEND_VM_NEXT_OPCODE();
54640 }
54641 
54642 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54643 {
54644 	USE_OPLINE
54645 	zval *op1, *op2;
54646 	int result;
54647 
54648 	op1 = EX_VAR(opline->op1.var);
54649 	op2 = EX_VAR(opline->op2.var);
54650 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
54651 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54652 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54653 	ZEND_VM_NEXT_OPCODE();
54654 }
54655 
54656 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54657 {
54658 	USE_OPLINE
54659 	zval *op1, *op2;
54660 	int result;
54661 
54662 	op1 = EX_VAR(opline->op1.var);
54663 	op2 = EX_VAR(opline->op2.var);
54664 	result = (Z_LVAL_P(op1) < Z_LVAL_P(op2));
54665 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54666 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54667 	ZEND_VM_NEXT_OPCODE();
54668 }
54669 
54670 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54671 {
54672 	USE_OPLINE
54673 	zval *op1, *op2;
54674 	int result;
54675 
54676 	op1 = EX_VAR(opline->op1.var);
54677 	op2 = EX_VAR(opline->op2.var);
54678 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
54679 
54680 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54681 	ZEND_VM_NEXT_OPCODE();
54682 }
54683 
54684 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54685 {
54686 	USE_OPLINE
54687 	zval *op1, *op2;
54688 	int result;
54689 
54690 	op1 = EX_VAR(opline->op1.var);
54691 	op2 = EX_VAR(opline->op2.var);
54692 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
54693 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54694 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54695 	ZEND_VM_NEXT_OPCODE();
54696 }
54697 
54698 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54699 {
54700 	USE_OPLINE
54701 	zval *op1, *op2;
54702 	int result;
54703 
54704 	op1 = EX_VAR(opline->op1.var);
54705 	op2 = EX_VAR(opline->op2.var);
54706 	result = (Z_DVAL_P(op1) < Z_DVAL_P(op2));
54707 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54708 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54709 	ZEND_VM_NEXT_OPCODE();
54710 }
54711 
54712 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54713 {
54714 	USE_OPLINE
54715 	zval *op1, *op2;
54716 	int result;
54717 
54718 	op1 = EX_VAR(opline->op1.var);
54719 	op2 = EX_VAR(opline->op2.var);
54720 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
54721 
54722 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54723 	ZEND_VM_NEXT_OPCODE();
54724 }
54725 
54726 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54727 {
54728 	USE_OPLINE
54729 	zval *op1, *op2;
54730 	int result;
54731 
54732 	op1 = EX_VAR(opline->op1.var);
54733 	op2 = EX_VAR(opline->op2.var);
54734 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
54735 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54736 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54737 	ZEND_VM_NEXT_OPCODE();
54738 }
54739 
54740 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54741 {
54742 	USE_OPLINE
54743 	zval *op1, *op2;
54744 	int result;
54745 
54746 	op1 = EX_VAR(opline->op1.var);
54747 	op2 = EX_VAR(opline->op2.var);
54748 	result = (Z_LVAL_P(op1) <= Z_LVAL_P(op2));
54749 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54750 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54751 	ZEND_VM_NEXT_OPCODE();
54752 }
54753 
54754 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54755 {
54756 	USE_OPLINE
54757 	zval *op1, *op2;
54758 	int result;
54759 
54760 	op1 = EX_VAR(opline->op1.var);
54761 	op2 = EX_VAR(opline->op2.var);
54762 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
54763 
54764 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54765 	ZEND_VM_NEXT_OPCODE();
54766 }
54767 
54768 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54769 {
54770 	USE_OPLINE
54771 	zval *op1, *op2;
54772 	int result;
54773 
54774 	op1 = EX_VAR(opline->op1.var);
54775 	op2 = EX_VAR(opline->op2.var);
54776 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
54777 	ZEND_VM_SMART_BRANCH_JMPZ(result, 0);
54778 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54779 	ZEND_VM_NEXT_OPCODE();
54780 }
54781 
54782 static ZEND_VM_HOT ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54783 {
54784 	USE_OPLINE
54785 	zval *op1, *op2;
54786 	int result;
54787 
54788 	op1 = EX_VAR(opline->op1.var);
54789 	op2 = EX_VAR(opline->op2.var);
54790 	result = (Z_DVAL_P(op1) <= Z_DVAL_P(op2));
54791 	ZEND_VM_SMART_BRANCH_JMPNZ(result, 0);
54792 	ZVAL_BOOL(EX_VAR(opline->result.var), result);
54793 	ZEND_VM_NEXT_OPCODE();
54794 }
54795 
54796 static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_NULL_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
54797 {
54798 	USE_OPLINE
54799 
54800 	zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);
54801 	ZEND_VM_NEXT_OPCODE(); /* Never reached */
54802 }
54803 
54804 
54805 ZEND_API void execute_ex(zend_execute_data *ex)
54806 {
54807 	DCL_OPLINE
54808 
54809 #ifdef ZEND_VM_IP_GLOBAL_REG
54810 	const zend_op *orig_opline = opline;
54811 #endif
54812 #ifdef ZEND_VM_FP_GLOBAL_REG
54813 	zend_execute_data *orig_execute_data = execute_data;
54814 	execute_data = ex;
54815 #else
54816 	zend_execute_data *execute_data = ex;
54817 #endif
54818 
54819 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
54820 	if (UNEXPECTED(execute_data == NULL)) {
54821 		static const void* labels[] = {
54822 			(void*)&&ZEND_NOP_SPEC_LABEL,
54823 			(void*)&&ZEND_ADD_SPEC_CONST_CONST_LABEL,
54824 			(void*)&&ZEND_ADD_SPEC_CONST_TMPVAR_LABEL,
54825 			(void*)&&ZEND_ADD_SPEC_CONST_TMPVAR_LABEL,
54826 			(void*)&&ZEND_NULL_LABEL,
54827 			(void*)&&ZEND_ADD_SPEC_CONST_CV_LABEL,
54828 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CONST_LABEL,
54829 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
54830 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
54831 			(void*)&&ZEND_NULL_LABEL,
54832 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CV_LABEL,
54833 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CONST_LABEL,
54834 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
54835 			(void*)&&ZEND_ADD_SPEC_TMPVAR_TMPVAR_LABEL,
54836 			(void*)&&ZEND_NULL_LABEL,
54837 			(void*)&&ZEND_ADD_SPEC_TMPVAR_CV_LABEL,
54838 			(void*)&&ZEND_NULL_LABEL,
54839 			(void*)&&ZEND_NULL_LABEL,
54840 			(void*)&&ZEND_NULL_LABEL,
54841 			(void*)&&ZEND_NULL_LABEL,
54842 			(void*)&&ZEND_NULL_LABEL,
54843 			(void*)&&ZEND_ADD_SPEC_CV_CONST_LABEL,
54844 			(void*)&&ZEND_ADD_SPEC_CV_TMPVAR_LABEL,
54845 			(void*)&&ZEND_ADD_SPEC_CV_TMPVAR_LABEL,
54846 			(void*)&&ZEND_NULL_LABEL,
54847 			(void*)&&ZEND_ADD_SPEC_CV_CV_LABEL,
54848 			(void*)&&ZEND_SUB_SPEC_CONST_CONST_LABEL,
54849 			(void*)&&ZEND_SUB_SPEC_CONST_TMPVAR_LABEL,
54850 			(void*)&&ZEND_SUB_SPEC_CONST_TMPVAR_LABEL,
54851 			(void*)&&ZEND_NULL_LABEL,
54852 			(void*)&&ZEND_SUB_SPEC_CONST_CV_LABEL,
54853 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CONST_LABEL,
54854 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
54855 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
54856 			(void*)&&ZEND_NULL_LABEL,
54857 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CV_LABEL,
54858 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CONST_LABEL,
54859 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
54860 			(void*)&&ZEND_SUB_SPEC_TMPVAR_TMPVAR_LABEL,
54861 			(void*)&&ZEND_NULL_LABEL,
54862 			(void*)&&ZEND_SUB_SPEC_TMPVAR_CV_LABEL,
54863 			(void*)&&ZEND_NULL_LABEL,
54864 			(void*)&&ZEND_NULL_LABEL,
54865 			(void*)&&ZEND_NULL_LABEL,
54866 			(void*)&&ZEND_NULL_LABEL,
54867 			(void*)&&ZEND_NULL_LABEL,
54868 			(void*)&&ZEND_SUB_SPEC_CV_CONST_LABEL,
54869 			(void*)&&ZEND_SUB_SPEC_CV_TMPVAR_LABEL,
54870 			(void*)&&ZEND_SUB_SPEC_CV_TMPVAR_LABEL,
54871 			(void*)&&ZEND_NULL_LABEL,
54872 			(void*)&&ZEND_SUB_SPEC_CV_CV_LABEL,
54873 			(void*)&&ZEND_MUL_SPEC_CONST_CONST_LABEL,
54874 			(void*)&&ZEND_MUL_SPEC_CONST_TMPVAR_LABEL,
54875 			(void*)&&ZEND_MUL_SPEC_CONST_TMPVAR_LABEL,
54876 			(void*)&&ZEND_NULL_LABEL,
54877 			(void*)&&ZEND_MUL_SPEC_CONST_CV_LABEL,
54878 			(void*)&&ZEND_MUL_SPEC_TMPVAR_CONST_LABEL,
54879 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
54880 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
54881 			(void*)&&ZEND_NULL_LABEL,
54882 			(void*)&&ZEND_MUL_SPEC_TMPVAR_CV_LABEL,
54883 			(void*)&&ZEND_MUL_SPEC_TMPVAR_CONST_LABEL,
54884 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
54885 			(void*)&&ZEND_MUL_SPEC_TMPVAR_TMPVAR_LABEL,
54886 			(void*)&&ZEND_NULL_LABEL,
54887 			(void*)&&ZEND_MUL_SPEC_TMPVAR_CV_LABEL,
54888 			(void*)&&ZEND_NULL_LABEL,
54889 			(void*)&&ZEND_NULL_LABEL,
54890 			(void*)&&ZEND_NULL_LABEL,
54891 			(void*)&&ZEND_NULL_LABEL,
54892 			(void*)&&ZEND_NULL_LABEL,
54893 			(void*)&&ZEND_MUL_SPEC_CV_CONST_LABEL,
54894 			(void*)&&ZEND_MUL_SPEC_CV_TMPVAR_LABEL,
54895 			(void*)&&ZEND_MUL_SPEC_CV_TMPVAR_LABEL,
54896 			(void*)&&ZEND_NULL_LABEL,
54897 			(void*)&&ZEND_MUL_SPEC_CV_CV_LABEL,
54898 			(void*)&&ZEND_DIV_SPEC_CONST_CONST_LABEL,
54899 			(void*)&&ZEND_DIV_SPEC_CONST_TMPVAR_LABEL,
54900 			(void*)&&ZEND_DIV_SPEC_CONST_TMPVAR_LABEL,
54901 			(void*)&&ZEND_NULL_LABEL,
54902 			(void*)&&ZEND_DIV_SPEC_CONST_CV_LABEL,
54903 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CONST_LABEL,
54904 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
54905 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
54906 			(void*)&&ZEND_NULL_LABEL,
54907 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CV_LABEL,
54908 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CONST_LABEL,
54909 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
54910 			(void*)&&ZEND_DIV_SPEC_TMPVAR_TMPVAR_LABEL,
54911 			(void*)&&ZEND_NULL_LABEL,
54912 			(void*)&&ZEND_DIV_SPEC_TMPVAR_CV_LABEL,
54913 			(void*)&&ZEND_NULL_LABEL,
54914 			(void*)&&ZEND_NULL_LABEL,
54915 			(void*)&&ZEND_NULL_LABEL,
54916 			(void*)&&ZEND_NULL_LABEL,
54917 			(void*)&&ZEND_NULL_LABEL,
54918 			(void*)&&ZEND_DIV_SPEC_CV_CONST_LABEL,
54919 			(void*)&&ZEND_DIV_SPEC_CV_TMPVAR_LABEL,
54920 			(void*)&&ZEND_DIV_SPEC_CV_TMPVAR_LABEL,
54921 			(void*)&&ZEND_NULL_LABEL,
54922 			(void*)&&ZEND_DIV_SPEC_CV_CV_LABEL,
54923 			(void*)&&ZEND_MOD_SPEC_CONST_CONST_LABEL,
54924 			(void*)&&ZEND_MOD_SPEC_CONST_TMPVAR_LABEL,
54925 			(void*)&&ZEND_MOD_SPEC_CONST_TMPVAR_LABEL,
54926 			(void*)&&ZEND_NULL_LABEL,
54927 			(void*)&&ZEND_MOD_SPEC_CONST_CV_LABEL,
54928 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CONST_LABEL,
54929 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
54930 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
54931 			(void*)&&ZEND_NULL_LABEL,
54932 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CV_LABEL,
54933 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CONST_LABEL,
54934 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
54935 			(void*)&&ZEND_MOD_SPEC_TMPVAR_TMPVAR_LABEL,
54936 			(void*)&&ZEND_NULL_LABEL,
54937 			(void*)&&ZEND_MOD_SPEC_TMPVAR_CV_LABEL,
54938 			(void*)&&ZEND_NULL_LABEL,
54939 			(void*)&&ZEND_NULL_LABEL,
54940 			(void*)&&ZEND_NULL_LABEL,
54941 			(void*)&&ZEND_NULL_LABEL,
54942 			(void*)&&ZEND_NULL_LABEL,
54943 			(void*)&&ZEND_MOD_SPEC_CV_CONST_LABEL,
54944 			(void*)&&ZEND_MOD_SPEC_CV_TMPVAR_LABEL,
54945 			(void*)&&ZEND_MOD_SPEC_CV_TMPVAR_LABEL,
54946 			(void*)&&ZEND_NULL_LABEL,
54947 			(void*)&&ZEND_MOD_SPEC_CV_CV_LABEL,
54948 			(void*)&&ZEND_SL_SPEC_CONST_CONST_LABEL,
54949 			(void*)&&ZEND_SL_SPEC_CONST_TMPVAR_LABEL,
54950 			(void*)&&ZEND_SL_SPEC_CONST_TMPVAR_LABEL,
54951 			(void*)&&ZEND_NULL_LABEL,
54952 			(void*)&&ZEND_SL_SPEC_CONST_CV_LABEL,
54953 			(void*)&&ZEND_SL_SPEC_TMPVAR_CONST_LABEL,
54954 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
54955 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
54956 			(void*)&&ZEND_NULL_LABEL,
54957 			(void*)&&ZEND_SL_SPEC_TMPVAR_CV_LABEL,
54958 			(void*)&&ZEND_SL_SPEC_TMPVAR_CONST_LABEL,
54959 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
54960 			(void*)&&ZEND_SL_SPEC_TMPVAR_TMPVAR_LABEL,
54961 			(void*)&&ZEND_NULL_LABEL,
54962 			(void*)&&ZEND_SL_SPEC_TMPVAR_CV_LABEL,
54963 			(void*)&&ZEND_NULL_LABEL,
54964 			(void*)&&ZEND_NULL_LABEL,
54965 			(void*)&&ZEND_NULL_LABEL,
54966 			(void*)&&ZEND_NULL_LABEL,
54967 			(void*)&&ZEND_NULL_LABEL,
54968 			(void*)&&ZEND_SL_SPEC_CV_CONST_LABEL,
54969 			(void*)&&ZEND_SL_SPEC_CV_TMPVAR_LABEL,
54970 			(void*)&&ZEND_SL_SPEC_CV_TMPVAR_LABEL,
54971 			(void*)&&ZEND_NULL_LABEL,
54972 			(void*)&&ZEND_SL_SPEC_CV_CV_LABEL,
54973 			(void*)&&ZEND_SR_SPEC_CONST_CONST_LABEL,
54974 			(void*)&&ZEND_SR_SPEC_CONST_TMPVAR_LABEL,
54975 			(void*)&&ZEND_SR_SPEC_CONST_TMPVAR_LABEL,
54976 			(void*)&&ZEND_NULL_LABEL,
54977 			(void*)&&ZEND_SR_SPEC_CONST_CV_LABEL,
54978 			(void*)&&ZEND_SR_SPEC_TMPVAR_CONST_LABEL,
54979 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
54980 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
54981 			(void*)&&ZEND_NULL_LABEL,
54982 			(void*)&&ZEND_SR_SPEC_TMPVAR_CV_LABEL,
54983 			(void*)&&ZEND_SR_SPEC_TMPVAR_CONST_LABEL,
54984 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
54985 			(void*)&&ZEND_SR_SPEC_TMPVAR_TMPVAR_LABEL,
54986 			(void*)&&ZEND_NULL_LABEL,
54987 			(void*)&&ZEND_SR_SPEC_TMPVAR_CV_LABEL,
54988 			(void*)&&ZEND_NULL_LABEL,
54989 			(void*)&&ZEND_NULL_LABEL,
54990 			(void*)&&ZEND_NULL_LABEL,
54991 			(void*)&&ZEND_NULL_LABEL,
54992 			(void*)&&ZEND_NULL_LABEL,
54993 			(void*)&&ZEND_SR_SPEC_CV_CONST_LABEL,
54994 			(void*)&&ZEND_SR_SPEC_CV_TMPVAR_LABEL,
54995 			(void*)&&ZEND_SR_SPEC_CV_TMPVAR_LABEL,
54996 			(void*)&&ZEND_NULL_LABEL,
54997 			(void*)&&ZEND_SR_SPEC_CV_CV_LABEL,
54998 			(void*)&&ZEND_CONCAT_SPEC_CONST_CONST_LABEL,
54999 			(void*)&&ZEND_CONCAT_SPEC_CONST_TMPVAR_LABEL,
55000 			(void*)&&ZEND_CONCAT_SPEC_CONST_TMPVAR_LABEL,
55001 			(void*)&&ZEND_NULL_LABEL,
55002 			(void*)&&ZEND_CONCAT_SPEC_CONST_CV_LABEL,
55003 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CONST_LABEL,
55004 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
55005 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
55006 			(void*)&&ZEND_NULL_LABEL,
55007 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CV_LABEL,
55008 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CONST_LABEL,
55009 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
55010 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
55011 			(void*)&&ZEND_NULL_LABEL,
55012 			(void*)&&ZEND_CONCAT_SPEC_TMPVAR_CV_LABEL,
55013 			(void*)&&ZEND_NULL_LABEL,
55014 			(void*)&&ZEND_NULL_LABEL,
55015 			(void*)&&ZEND_NULL_LABEL,
55016 			(void*)&&ZEND_NULL_LABEL,
55017 			(void*)&&ZEND_NULL_LABEL,
55018 			(void*)&&ZEND_CONCAT_SPEC_CV_CONST_LABEL,
55019 			(void*)&&ZEND_CONCAT_SPEC_CV_TMPVAR_LABEL,
55020 			(void*)&&ZEND_CONCAT_SPEC_CV_TMPVAR_LABEL,
55021 			(void*)&&ZEND_NULL_LABEL,
55022 			(void*)&&ZEND_CONCAT_SPEC_CV_CV_LABEL,
55023 			(void*)&&ZEND_BW_OR_SPEC_CONST_CONST_LABEL,
55024 			(void*)&&ZEND_BW_OR_SPEC_CONST_TMPVAR_LABEL,
55025 			(void*)&&ZEND_BW_OR_SPEC_CONST_TMPVAR_LABEL,
55026 			(void*)&&ZEND_NULL_LABEL,
55027 			(void*)&&ZEND_BW_OR_SPEC_CONST_CV_LABEL,
55028 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_CONST_LABEL,
55029 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
55030 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
55031 			(void*)&&ZEND_NULL_LABEL,
55032 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_CV_LABEL,
55033 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_CONST_LABEL,
55034 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
55035 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_LABEL,
55036 			(void*)&&ZEND_NULL_LABEL,
55037 			(void*)&&ZEND_BW_OR_SPEC_TMPVAR_CV_LABEL,
55038 			(void*)&&ZEND_NULL_LABEL,
55039 			(void*)&&ZEND_NULL_LABEL,
55040 			(void*)&&ZEND_NULL_LABEL,
55041 			(void*)&&ZEND_NULL_LABEL,
55042 			(void*)&&ZEND_NULL_LABEL,
55043 			(void*)&&ZEND_BW_OR_SPEC_CV_CONST_LABEL,
55044 			(void*)&&ZEND_BW_OR_SPEC_CV_TMPVAR_LABEL,
55045 			(void*)&&ZEND_BW_OR_SPEC_CV_TMPVAR_LABEL,
55046 			(void*)&&ZEND_NULL_LABEL,
55047 			(void*)&&ZEND_BW_OR_SPEC_CV_CV_LABEL,
55048 			(void*)&&ZEND_BW_AND_SPEC_CONST_CONST_LABEL,
55049 			(void*)&&ZEND_BW_AND_SPEC_CONST_TMPVAR_LABEL,
55050 			(void*)&&ZEND_BW_AND_SPEC_CONST_TMPVAR_LABEL,
55051 			(void*)&&ZEND_NULL_LABEL,
55052 			(void*)&&ZEND_BW_AND_SPEC_CONST_CV_LABEL,
55053 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_CONST_LABEL,
55054 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
55055 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
55056 			(void*)&&ZEND_NULL_LABEL,
55057 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_CV_LABEL,
55058 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_CONST_LABEL,
55059 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
55060 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_LABEL,
55061 			(void*)&&ZEND_NULL_LABEL,
55062 			(void*)&&ZEND_BW_AND_SPEC_TMPVAR_CV_LABEL,
55063 			(void*)&&ZEND_NULL_LABEL,
55064 			(void*)&&ZEND_NULL_LABEL,
55065 			(void*)&&ZEND_NULL_LABEL,
55066 			(void*)&&ZEND_NULL_LABEL,
55067 			(void*)&&ZEND_NULL_LABEL,
55068 			(void*)&&ZEND_BW_AND_SPEC_CV_CONST_LABEL,
55069 			(void*)&&ZEND_BW_AND_SPEC_CV_TMPVAR_LABEL,
55070 			(void*)&&ZEND_BW_AND_SPEC_CV_TMPVAR_LABEL,
55071 			(void*)&&ZEND_NULL_LABEL,
55072 			(void*)&&ZEND_BW_AND_SPEC_CV_CV_LABEL,
55073 			(void*)&&ZEND_BW_XOR_SPEC_CONST_CONST_LABEL,
55074 			(void*)&&ZEND_BW_XOR_SPEC_CONST_TMPVAR_LABEL,
55075 			(void*)&&ZEND_BW_XOR_SPEC_CONST_TMPVAR_LABEL,
55076 			(void*)&&ZEND_NULL_LABEL,
55077 			(void*)&&ZEND_BW_XOR_SPEC_CONST_CV_LABEL,
55078 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_CONST_LABEL,
55079 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55080 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55081 			(void*)&&ZEND_NULL_LABEL,
55082 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_CV_LABEL,
55083 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_CONST_LABEL,
55084 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55085 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55086 			(void*)&&ZEND_NULL_LABEL,
55087 			(void*)&&ZEND_BW_XOR_SPEC_TMPVAR_CV_LABEL,
55088 			(void*)&&ZEND_NULL_LABEL,
55089 			(void*)&&ZEND_NULL_LABEL,
55090 			(void*)&&ZEND_NULL_LABEL,
55091 			(void*)&&ZEND_NULL_LABEL,
55092 			(void*)&&ZEND_NULL_LABEL,
55093 			(void*)&&ZEND_BW_XOR_SPEC_CV_CONST_LABEL,
55094 			(void*)&&ZEND_BW_XOR_SPEC_CV_TMPVAR_LABEL,
55095 			(void*)&&ZEND_BW_XOR_SPEC_CV_TMPVAR_LABEL,
55096 			(void*)&&ZEND_NULL_LABEL,
55097 			(void*)&&ZEND_BW_XOR_SPEC_CV_CV_LABEL,
55098 			(void*)&&ZEND_BW_NOT_SPEC_CONST_LABEL,
55099 			(void*)&&ZEND_BW_NOT_SPEC_TMPVAR_LABEL,
55100 			(void*)&&ZEND_BW_NOT_SPEC_TMPVAR_LABEL,
55101 			(void*)&&ZEND_NULL_LABEL,
55102 			(void*)&&ZEND_BW_NOT_SPEC_CV_LABEL,
55103 			(void*)&&ZEND_BOOL_NOT_SPEC_CONST_LABEL,
55104 			(void*)&&ZEND_BOOL_NOT_SPEC_TMPVAR_LABEL,
55105 			(void*)&&ZEND_BOOL_NOT_SPEC_TMPVAR_LABEL,
55106 			(void*)&&ZEND_NULL_LABEL,
55107 			(void*)&&ZEND_BOOL_NOT_SPEC_CV_LABEL,
55108 			(void*)&&ZEND_BOOL_XOR_SPEC_CONST_CONST_LABEL,
55109 			(void*)&&ZEND_BOOL_XOR_SPEC_CONST_TMPVAR_LABEL,
55110 			(void*)&&ZEND_BOOL_XOR_SPEC_CONST_TMPVAR_LABEL,
55111 			(void*)&&ZEND_NULL_LABEL,
55112 			(void*)&&ZEND_BOOL_XOR_SPEC_CONST_CV_LABEL,
55113 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_LABEL,
55114 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55115 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55116 			(void*)&&ZEND_NULL_LABEL,
55117 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_CV_LABEL,
55118 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_LABEL,
55119 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55120 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_LABEL,
55121 			(void*)&&ZEND_NULL_LABEL,
55122 			(void*)&&ZEND_BOOL_XOR_SPEC_TMPVAR_CV_LABEL,
55123 			(void*)&&ZEND_NULL_LABEL,
55124 			(void*)&&ZEND_NULL_LABEL,
55125 			(void*)&&ZEND_NULL_LABEL,
55126 			(void*)&&ZEND_NULL_LABEL,
55127 			(void*)&&ZEND_NULL_LABEL,
55128 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_CONST_LABEL,
55129 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_TMPVAR_LABEL,
55130 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_TMPVAR_LABEL,
55131 			(void*)&&ZEND_NULL_LABEL,
55132 			(void*)&&ZEND_BOOL_XOR_SPEC_CV_CV_LABEL,
55133 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CONST_CONST_LABEL,
55134 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CONST_TMP_LABEL,
55135 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CONST_VAR_LABEL,
55136 			(void*)&&ZEND_NULL_LABEL,
55137 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CONST_CV_LABEL,
55138 			(void*)&&ZEND_IS_IDENTICAL_SPEC_TMP_CONST_LABEL,
55139 			(void*)&&ZEND_IS_IDENTICAL_SPEC_TMP_TMP_LABEL,
55140 			(void*)&&ZEND_IS_IDENTICAL_SPEC_TMP_VAR_LABEL,
55141 			(void*)&&ZEND_NULL_LABEL,
55142 			(void*)&&ZEND_IS_IDENTICAL_SPEC_TMP_CV_LABEL,
55143 			(void*)&&ZEND_IS_IDENTICAL_SPEC_VAR_CONST_LABEL,
55144 			(void*)&&ZEND_IS_IDENTICAL_SPEC_VAR_TMP_LABEL,
55145 			(void*)&&ZEND_IS_IDENTICAL_SPEC_VAR_VAR_LABEL,
55146 			(void*)&&ZEND_NULL_LABEL,
55147 			(void*)&&ZEND_IS_IDENTICAL_SPEC_VAR_CV_LABEL,
55148 			(void*)&&ZEND_NULL_LABEL,
55149 			(void*)&&ZEND_NULL_LABEL,
55150 			(void*)&&ZEND_NULL_LABEL,
55151 			(void*)&&ZEND_NULL_LABEL,
55152 			(void*)&&ZEND_NULL_LABEL,
55153 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_CONST_LABEL,
55154 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_TMP_LABEL,
55155 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_VAR_LABEL,
55156 			(void*)&&ZEND_NULL_LABEL,
55157 			(void*)&&ZEND_IS_IDENTICAL_SPEC_CV_CV_LABEL,
55158 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_LABEL,
55159 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_LABEL,
55160 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_LABEL,
55161 			(void*)&&ZEND_NULL_LABEL,
55162 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV_LABEL,
55163 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_LABEL,
55164 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_LABEL,
55165 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR_LABEL,
55166 			(void*)&&ZEND_NULL_LABEL,
55167 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV_LABEL,
55168 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_LABEL,
55169 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_LABEL,
55170 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_LABEL,
55171 			(void*)&&ZEND_NULL_LABEL,
55172 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV_LABEL,
55173 			(void*)&&ZEND_NULL_LABEL,
55174 			(void*)&&ZEND_NULL_LABEL,
55175 			(void*)&&ZEND_NULL_LABEL,
55176 			(void*)&&ZEND_NULL_LABEL,
55177 			(void*)&&ZEND_NULL_LABEL,
55178 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_LABEL,
55179 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_LABEL,
55180 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_LABEL,
55181 			(void*)&&ZEND_NULL_LABEL,
55182 			(void*)&&ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_LABEL,
55183 			(void*)&&ZEND_IS_EQUAL_SPEC_CONST_CONST_LABEL,
55184 			(void*)&&ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_LABEL,
55185 			(void*)&&ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_LABEL,
55186 			(void*)&&ZEND_NULL_LABEL,
55187 			(void*)&&ZEND_IS_EQUAL_SPEC_CONST_CV_LABEL,
55188 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_LABEL,
55189 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55190 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55191 			(void*)&&ZEND_NULL_LABEL,
55192 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_CV_LABEL,
55193 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_LABEL,
55194 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55195 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55196 			(void*)&&ZEND_NULL_LABEL,
55197 			(void*)&&ZEND_IS_EQUAL_SPEC_TMPVAR_CV_LABEL,
55198 			(void*)&&ZEND_NULL_LABEL,
55199 			(void*)&&ZEND_NULL_LABEL,
55200 			(void*)&&ZEND_NULL_LABEL,
55201 			(void*)&&ZEND_NULL_LABEL,
55202 			(void*)&&ZEND_NULL_LABEL,
55203 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_CONST_LABEL,
55204 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_TMPVAR_LABEL,
55205 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_TMPVAR_LABEL,
55206 			(void*)&&ZEND_NULL_LABEL,
55207 			(void*)&&ZEND_IS_EQUAL_SPEC_CV_CV_LABEL,
55208 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_LABEL,
55209 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_LABEL,
55210 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_LABEL,
55211 			(void*)&&ZEND_NULL_LABEL,
55212 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_LABEL,
55213 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_LABEL,
55214 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55215 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55216 			(void*)&&ZEND_NULL_LABEL,
55217 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_LABEL,
55218 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_LABEL,
55219 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55220 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55221 			(void*)&&ZEND_NULL_LABEL,
55222 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_LABEL,
55223 			(void*)&&ZEND_NULL_LABEL,
55224 			(void*)&&ZEND_NULL_LABEL,
55225 			(void*)&&ZEND_NULL_LABEL,
55226 			(void*)&&ZEND_NULL_LABEL,
55227 			(void*)&&ZEND_NULL_LABEL,
55228 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_LABEL,
55229 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_LABEL,
55230 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_LABEL,
55231 			(void*)&&ZEND_NULL_LABEL,
55232 			(void*)&&ZEND_IS_NOT_EQUAL_SPEC_CV_CV_LABEL,
55233 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_CONST_LABEL,
55234 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_LABEL,
55235 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_LABEL,
55236 			(void*)&&ZEND_NULL_LABEL,
55237 			(void*)&&ZEND_IS_SMALLER_SPEC_CONST_CV_LABEL,
55238 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_LABEL,
55239 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
55240 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
55241 			(void*)&&ZEND_NULL_LABEL,
55242 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CV_LABEL,
55243 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_LABEL,
55244 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
55245 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_LABEL,
55246 			(void*)&&ZEND_NULL_LABEL,
55247 			(void*)&&ZEND_IS_SMALLER_SPEC_TMPVAR_CV_LABEL,
55248 			(void*)&&ZEND_NULL_LABEL,
55249 			(void*)&&ZEND_NULL_LABEL,
55250 			(void*)&&ZEND_NULL_LABEL,
55251 			(void*)&&ZEND_NULL_LABEL,
55252 			(void*)&&ZEND_NULL_LABEL,
55253 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_CONST_LABEL,
55254 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_TMPVAR_LABEL,
55255 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_TMPVAR_LABEL,
55256 			(void*)&&ZEND_NULL_LABEL,
55257 			(void*)&&ZEND_IS_SMALLER_SPEC_CV_CV_LABEL,
55258 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_LABEL,
55259 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_LABEL,
55260 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_LABEL,
55261 			(void*)&&ZEND_NULL_LABEL,
55262 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_LABEL,
55263 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_LABEL,
55264 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55265 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55266 			(void*)&&ZEND_NULL_LABEL,
55267 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_LABEL,
55268 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_LABEL,
55269 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55270 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_LABEL,
55271 			(void*)&&ZEND_NULL_LABEL,
55272 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_LABEL,
55273 			(void*)&&ZEND_NULL_LABEL,
55274 			(void*)&&ZEND_NULL_LABEL,
55275 			(void*)&&ZEND_NULL_LABEL,
55276 			(void*)&&ZEND_NULL_LABEL,
55277 			(void*)&&ZEND_NULL_LABEL,
55278 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_LABEL,
55279 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_LABEL,
55280 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_LABEL,
55281 			(void*)&&ZEND_NULL_LABEL,
55282 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_LABEL,
55283 			(void*)&&ZEND_CAST_SPEC_CONST_LABEL,
55284 			(void*)&&ZEND_CAST_SPEC_TMP_LABEL,
55285 			(void*)&&ZEND_CAST_SPEC_VAR_LABEL,
55286 			(void*)&&ZEND_NULL_LABEL,
55287 			(void*)&&ZEND_CAST_SPEC_CV_LABEL,
55288 			(void*)&&ZEND_QM_ASSIGN_SPEC_CONST_LABEL,
55289 			(void*)&&ZEND_QM_ASSIGN_SPEC_TMP_LABEL,
55290 			(void*)&&ZEND_QM_ASSIGN_SPEC_VAR_LABEL,
55291 			(void*)&&ZEND_NULL_LABEL,
55292 			(void*)&&ZEND_QM_ASSIGN_SPEC_CV_LABEL,
55293 			(void*)&&ZEND_NULL_LABEL,
55294 			(void*)&&ZEND_NULL_LABEL,
55295 			(void*)&&ZEND_NULL_LABEL,
55296 			(void*)&&ZEND_NULL_LABEL,
55297 			(void*)&&ZEND_NULL_LABEL,
55298 			(void*)&&ZEND_NULL_LABEL,
55299 			(void*)&&ZEND_NULL_LABEL,
55300 			(void*)&&ZEND_NULL_LABEL,
55301 			(void*)&&ZEND_NULL_LABEL,
55302 			(void*)&&ZEND_NULL_LABEL,
55303 			(void*)&&ZEND_NULL_LABEL,
55304 			(void*)&&ZEND_NULL_LABEL,
55305 			(void*)&&ZEND_NULL_LABEL,
55306 			(void*)&&ZEND_NULL_LABEL,
55307 			(void*)&&ZEND_NULL_LABEL,
55308 			(void*)&&ZEND_NULL_LABEL,
55309 			(void*)&&ZEND_NULL_LABEL,
55310 			(void*)&&ZEND_NULL_LABEL,
55311 			(void*)&&ZEND_NULL_LABEL,
55312 			(void*)&&ZEND_NULL_LABEL,
55313 			(void*)&&ZEND_NULL_LABEL,
55314 			(void*)&&ZEND_NULL_LABEL,
55315 			(void*)&&ZEND_NULL_LABEL,
55316 			(void*)&&ZEND_NULL_LABEL,
55317 			(void*)&&ZEND_NULL_LABEL,
55318 			(void*)&&ZEND_NULL_LABEL,
55319 			(void*)&&ZEND_NULL_LABEL,
55320 			(void*)&&ZEND_NULL_LABEL,
55321 			(void*)&&ZEND_NULL_LABEL,
55322 			(void*)&&ZEND_NULL_LABEL,
55323 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_LABEL,
55324 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_LABEL,
55325 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_LABEL,
55326 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_LABEL,
55327 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_LABEL,
55328 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_LABEL,
55329 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_LABEL,
55330 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_LABEL,
55331 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_LABEL,
55332 			(void*)&&ZEND_NULL_LABEL,
55333 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_LABEL,
55334 			(void*)&&ZEND_NULL_LABEL,
55335 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_LABEL,
55336 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_LABEL,
55337 			(void*)&&ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_LABEL,
55338 			(void*)&&ZEND_NULL_LABEL,
55339 			(void*)&&ZEND_NULL_LABEL,
55340 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_LABEL,
55341 			(void*)&&ZEND_NULL_LABEL,
55342 			(void*)&&ZEND_NULL_LABEL,
55343 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55344 			(void*)&&ZEND_NULL_LABEL,
55345 			(void*)&&ZEND_NULL_LABEL,
55346 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55347 			(void*)&&ZEND_NULL_LABEL,
55348 			(void*)&&ZEND_NULL_LABEL,
55349 			(void*)&&ZEND_NULL_LABEL,
55350 			(void*)&&ZEND_NULL_LABEL,
55351 			(void*)&&ZEND_NULL_LABEL,
55352 			(void*)&&ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_LABEL,
55353 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_LABEL,
55354 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_LABEL,
55355 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_LABEL,
55356 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_LABEL,
55357 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_LABEL,
55358 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_LABEL,
55359 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_LABEL,
55360 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_LABEL,
55361 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_LABEL,
55362 			(void*)&&ZEND_NULL_LABEL,
55363 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_LABEL,
55364 			(void*)&&ZEND_NULL_LABEL,
55365 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_LABEL,
55366 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_LABEL,
55367 			(void*)&&ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_LABEL,
55368 			(void*)&&ZEND_NULL_LABEL,
55369 			(void*)&&ZEND_NULL_LABEL,
55370 			(void*)&&ZEND_NULL_LABEL,
55371 			(void*)&&ZEND_NULL_LABEL,
55372 			(void*)&&ZEND_NULL_LABEL,
55373 			(void*)&&ZEND_NULL_LABEL,
55374 			(void*)&&ZEND_NULL_LABEL,
55375 			(void*)&&ZEND_NULL_LABEL,
55376 			(void*)&&ZEND_NULL_LABEL,
55377 			(void*)&&ZEND_NULL_LABEL,
55378 			(void*)&&ZEND_NULL_LABEL,
55379 			(void*)&&ZEND_NULL_LABEL,
55380 			(void*)&&ZEND_NULL_LABEL,
55381 			(void*)&&ZEND_NULL_LABEL,
55382 			(void*)&&ZEND_NULL_LABEL,
55383 			(void*)&&ZEND_NULL_LABEL,
55384 			(void*)&&ZEND_NULL_LABEL,
55385 			(void*)&&ZEND_NULL_LABEL,
55386 			(void*)&&ZEND_NULL_LABEL,
55387 			(void*)&&ZEND_NULL_LABEL,
55388 			(void*)&&ZEND_NULL_LABEL,
55389 			(void*)&&ZEND_NULL_LABEL,
55390 			(void*)&&ZEND_NULL_LABEL,
55391 			(void*)&&ZEND_NULL_LABEL,
55392 			(void*)&&ZEND_NULL_LABEL,
55393 			(void*)&&ZEND_NULL_LABEL,
55394 			(void*)&&ZEND_NULL_LABEL,
55395 			(void*)&&ZEND_NULL_LABEL,
55396 			(void*)&&ZEND_NULL_LABEL,
55397 			(void*)&&ZEND_NULL_LABEL,
55398 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_LABEL,
55399 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_LABEL,
55400 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_LABEL,
55401 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_LABEL,
55402 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_LABEL,
55403 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_LABEL,
55404 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_LABEL,
55405 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_LABEL,
55406 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_LABEL,
55407 			(void*)&&ZEND_NULL_LABEL,
55408 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_LABEL,
55409 			(void*)&&ZEND_NULL_LABEL,
55410 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_LABEL,
55411 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_LABEL,
55412 			(void*)&&ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_LABEL,
55413 			(void*)&&ZEND_NULL_LABEL,
55414 			(void*)&&ZEND_NULL_LABEL,
55415 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_LABEL,
55416 			(void*)&&ZEND_NULL_LABEL,
55417 			(void*)&&ZEND_NULL_LABEL,
55418 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55419 			(void*)&&ZEND_NULL_LABEL,
55420 			(void*)&&ZEND_NULL_LABEL,
55421 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55422 			(void*)&&ZEND_NULL_LABEL,
55423 			(void*)&&ZEND_NULL_LABEL,
55424 			(void*)&&ZEND_NULL_LABEL,
55425 			(void*)&&ZEND_NULL_LABEL,
55426 			(void*)&&ZEND_NULL_LABEL,
55427 			(void*)&&ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_LABEL,
55428 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_LABEL,
55429 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_LABEL,
55430 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_LABEL,
55431 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_LABEL,
55432 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_LABEL,
55433 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_LABEL,
55434 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_LABEL,
55435 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_LABEL,
55436 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_LABEL,
55437 			(void*)&&ZEND_NULL_LABEL,
55438 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_LABEL,
55439 			(void*)&&ZEND_NULL_LABEL,
55440 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_LABEL,
55441 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_LABEL,
55442 			(void*)&&ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_LABEL,
55443 			(void*)&&ZEND_NULL_LABEL,
55444 			(void*)&&ZEND_NULL_LABEL,
55445 			(void*)&&ZEND_NULL_LABEL,
55446 			(void*)&&ZEND_NULL_LABEL,
55447 			(void*)&&ZEND_NULL_LABEL,
55448 			(void*)&&ZEND_NULL_LABEL,
55449 			(void*)&&ZEND_NULL_LABEL,
55450 			(void*)&&ZEND_NULL_LABEL,
55451 			(void*)&&ZEND_NULL_LABEL,
55452 			(void*)&&ZEND_NULL_LABEL,
55453 			(void*)&&ZEND_NULL_LABEL,
55454 			(void*)&&ZEND_NULL_LABEL,
55455 			(void*)&&ZEND_NULL_LABEL,
55456 			(void*)&&ZEND_NULL_LABEL,
55457 			(void*)&&ZEND_NULL_LABEL,
55458 			(void*)&&ZEND_NULL_LABEL,
55459 			(void*)&&ZEND_NULL_LABEL,
55460 			(void*)&&ZEND_NULL_LABEL,
55461 			(void*)&&ZEND_NULL_LABEL,
55462 			(void*)&&ZEND_NULL_LABEL,
55463 			(void*)&&ZEND_NULL_LABEL,
55464 			(void*)&&ZEND_NULL_LABEL,
55465 			(void*)&&ZEND_NULL_LABEL,
55466 			(void*)&&ZEND_NULL_LABEL,
55467 			(void*)&&ZEND_NULL_LABEL,
55468 			(void*)&&ZEND_NULL_LABEL,
55469 			(void*)&&ZEND_NULL_LABEL,
55470 			(void*)&&ZEND_NULL_LABEL,
55471 			(void*)&&ZEND_NULL_LABEL,
55472 			(void*)&&ZEND_NULL_LABEL,
55473 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_LABEL,
55474 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_LABEL,
55475 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_LABEL,
55476 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_LABEL,
55477 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_LABEL,
55478 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_LABEL,
55479 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_LABEL,
55480 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_LABEL,
55481 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_LABEL,
55482 			(void*)&&ZEND_NULL_LABEL,
55483 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_LABEL,
55484 			(void*)&&ZEND_NULL_LABEL,
55485 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_LABEL,
55486 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_LABEL,
55487 			(void*)&&ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_LABEL,
55488 			(void*)&&ZEND_NULL_LABEL,
55489 			(void*)&&ZEND_NULL_LABEL,
55490 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_LABEL,
55491 			(void*)&&ZEND_NULL_LABEL,
55492 			(void*)&&ZEND_NULL_LABEL,
55493 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55494 			(void*)&&ZEND_NULL_LABEL,
55495 			(void*)&&ZEND_NULL_LABEL,
55496 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55497 			(void*)&&ZEND_NULL_LABEL,
55498 			(void*)&&ZEND_NULL_LABEL,
55499 			(void*)&&ZEND_NULL_LABEL,
55500 			(void*)&&ZEND_NULL_LABEL,
55501 			(void*)&&ZEND_NULL_LABEL,
55502 			(void*)&&ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_LABEL,
55503 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_LABEL,
55504 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_LABEL,
55505 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_LABEL,
55506 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_LABEL,
55507 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_LABEL,
55508 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_LABEL,
55509 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_LABEL,
55510 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_LABEL,
55511 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_LABEL,
55512 			(void*)&&ZEND_NULL_LABEL,
55513 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_LABEL,
55514 			(void*)&&ZEND_NULL_LABEL,
55515 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_LABEL,
55516 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_LABEL,
55517 			(void*)&&ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_LABEL,
55518 			(void*)&&ZEND_NULL_LABEL,
55519 			(void*)&&ZEND_NULL_LABEL,
55520 			(void*)&&ZEND_NULL_LABEL,
55521 			(void*)&&ZEND_NULL_LABEL,
55522 			(void*)&&ZEND_NULL_LABEL,
55523 			(void*)&&ZEND_NULL_LABEL,
55524 			(void*)&&ZEND_NULL_LABEL,
55525 			(void*)&&ZEND_NULL_LABEL,
55526 			(void*)&&ZEND_NULL_LABEL,
55527 			(void*)&&ZEND_NULL_LABEL,
55528 			(void*)&&ZEND_NULL_LABEL,
55529 			(void*)&&ZEND_NULL_LABEL,
55530 			(void*)&&ZEND_NULL_LABEL,
55531 			(void*)&&ZEND_NULL_LABEL,
55532 			(void*)&&ZEND_NULL_LABEL,
55533 			(void*)&&ZEND_NULL_LABEL,
55534 			(void*)&&ZEND_NULL_LABEL,
55535 			(void*)&&ZEND_NULL_LABEL,
55536 			(void*)&&ZEND_NULL_LABEL,
55537 			(void*)&&ZEND_NULL_LABEL,
55538 			(void*)&&ZEND_NULL_LABEL,
55539 			(void*)&&ZEND_NULL_LABEL,
55540 			(void*)&&ZEND_NULL_LABEL,
55541 			(void*)&&ZEND_NULL_LABEL,
55542 			(void*)&&ZEND_NULL_LABEL,
55543 			(void*)&&ZEND_NULL_LABEL,
55544 			(void*)&&ZEND_NULL_LABEL,
55545 			(void*)&&ZEND_NULL_LABEL,
55546 			(void*)&&ZEND_NULL_LABEL,
55547 			(void*)&&ZEND_NULL_LABEL,
55548 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_LABEL,
55549 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_LABEL,
55550 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_LABEL,
55551 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_LABEL,
55552 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_LABEL,
55553 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_LABEL,
55554 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_LABEL,
55555 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_LABEL,
55556 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_LABEL,
55557 			(void*)&&ZEND_NULL_LABEL,
55558 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_LABEL,
55559 			(void*)&&ZEND_NULL_LABEL,
55560 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_LABEL,
55561 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_LABEL,
55562 			(void*)&&ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_LABEL,
55563 			(void*)&&ZEND_NULL_LABEL,
55564 			(void*)&&ZEND_NULL_LABEL,
55565 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_LABEL,
55566 			(void*)&&ZEND_NULL_LABEL,
55567 			(void*)&&ZEND_NULL_LABEL,
55568 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55569 			(void*)&&ZEND_NULL_LABEL,
55570 			(void*)&&ZEND_NULL_LABEL,
55571 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55572 			(void*)&&ZEND_NULL_LABEL,
55573 			(void*)&&ZEND_NULL_LABEL,
55574 			(void*)&&ZEND_NULL_LABEL,
55575 			(void*)&&ZEND_NULL_LABEL,
55576 			(void*)&&ZEND_NULL_LABEL,
55577 			(void*)&&ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_LABEL,
55578 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_LABEL,
55579 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_LABEL,
55580 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_LABEL,
55581 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_LABEL,
55582 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_LABEL,
55583 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_LABEL,
55584 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_LABEL,
55585 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_LABEL,
55586 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_LABEL,
55587 			(void*)&&ZEND_NULL_LABEL,
55588 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_LABEL,
55589 			(void*)&&ZEND_NULL_LABEL,
55590 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_LABEL,
55591 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_LABEL,
55592 			(void*)&&ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_LABEL,
55593 			(void*)&&ZEND_NULL_LABEL,
55594 			(void*)&&ZEND_NULL_LABEL,
55595 			(void*)&&ZEND_NULL_LABEL,
55596 			(void*)&&ZEND_NULL_LABEL,
55597 			(void*)&&ZEND_NULL_LABEL,
55598 			(void*)&&ZEND_NULL_LABEL,
55599 			(void*)&&ZEND_NULL_LABEL,
55600 			(void*)&&ZEND_NULL_LABEL,
55601 			(void*)&&ZEND_NULL_LABEL,
55602 			(void*)&&ZEND_NULL_LABEL,
55603 			(void*)&&ZEND_NULL_LABEL,
55604 			(void*)&&ZEND_NULL_LABEL,
55605 			(void*)&&ZEND_NULL_LABEL,
55606 			(void*)&&ZEND_NULL_LABEL,
55607 			(void*)&&ZEND_NULL_LABEL,
55608 			(void*)&&ZEND_NULL_LABEL,
55609 			(void*)&&ZEND_NULL_LABEL,
55610 			(void*)&&ZEND_NULL_LABEL,
55611 			(void*)&&ZEND_NULL_LABEL,
55612 			(void*)&&ZEND_NULL_LABEL,
55613 			(void*)&&ZEND_NULL_LABEL,
55614 			(void*)&&ZEND_NULL_LABEL,
55615 			(void*)&&ZEND_NULL_LABEL,
55616 			(void*)&&ZEND_NULL_LABEL,
55617 			(void*)&&ZEND_NULL_LABEL,
55618 			(void*)&&ZEND_NULL_LABEL,
55619 			(void*)&&ZEND_NULL_LABEL,
55620 			(void*)&&ZEND_NULL_LABEL,
55621 			(void*)&&ZEND_NULL_LABEL,
55622 			(void*)&&ZEND_NULL_LABEL,
55623 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_LABEL,
55624 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_LABEL,
55625 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_LABEL,
55626 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_LABEL,
55627 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_LABEL,
55628 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_LABEL,
55629 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_LABEL,
55630 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_LABEL,
55631 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_LABEL,
55632 			(void*)&&ZEND_NULL_LABEL,
55633 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_LABEL,
55634 			(void*)&&ZEND_NULL_LABEL,
55635 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_LABEL,
55636 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_LABEL,
55637 			(void*)&&ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_LABEL,
55638 			(void*)&&ZEND_NULL_LABEL,
55639 			(void*)&&ZEND_NULL_LABEL,
55640 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_LABEL,
55641 			(void*)&&ZEND_NULL_LABEL,
55642 			(void*)&&ZEND_NULL_LABEL,
55643 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55644 			(void*)&&ZEND_NULL_LABEL,
55645 			(void*)&&ZEND_NULL_LABEL,
55646 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55647 			(void*)&&ZEND_NULL_LABEL,
55648 			(void*)&&ZEND_NULL_LABEL,
55649 			(void*)&&ZEND_NULL_LABEL,
55650 			(void*)&&ZEND_NULL_LABEL,
55651 			(void*)&&ZEND_NULL_LABEL,
55652 			(void*)&&ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_LABEL,
55653 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_LABEL,
55654 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_LABEL,
55655 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_LABEL,
55656 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_LABEL,
55657 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_LABEL,
55658 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_LABEL,
55659 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_LABEL,
55660 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_LABEL,
55661 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_LABEL,
55662 			(void*)&&ZEND_NULL_LABEL,
55663 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_LABEL,
55664 			(void*)&&ZEND_NULL_LABEL,
55665 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_LABEL,
55666 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_LABEL,
55667 			(void*)&&ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_LABEL,
55668 			(void*)&&ZEND_NULL_LABEL,
55669 			(void*)&&ZEND_NULL_LABEL,
55670 			(void*)&&ZEND_NULL_LABEL,
55671 			(void*)&&ZEND_NULL_LABEL,
55672 			(void*)&&ZEND_NULL_LABEL,
55673 			(void*)&&ZEND_NULL_LABEL,
55674 			(void*)&&ZEND_NULL_LABEL,
55675 			(void*)&&ZEND_NULL_LABEL,
55676 			(void*)&&ZEND_NULL_LABEL,
55677 			(void*)&&ZEND_NULL_LABEL,
55678 			(void*)&&ZEND_NULL_LABEL,
55679 			(void*)&&ZEND_NULL_LABEL,
55680 			(void*)&&ZEND_NULL_LABEL,
55681 			(void*)&&ZEND_NULL_LABEL,
55682 			(void*)&&ZEND_NULL_LABEL,
55683 			(void*)&&ZEND_NULL_LABEL,
55684 			(void*)&&ZEND_NULL_LABEL,
55685 			(void*)&&ZEND_NULL_LABEL,
55686 			(void*)&&ZEND_NULL_LABEL,
55687 			(void*)&&ZEND_NULL_LABEL,
55688 			(void*)&&ZEND_NULL_LABEL,
55689 			(void*)&&ZEND_NULL_LABEL,
55690 			(void*)&&ZEND_NULL_LABEL,
55691 			(void*)&&ZEND_NULL_LABEL,
55692 			(void*)&&ZEND_NULL_LABEL,
55693 			(void*)&&ZEND_NULL_LABEL,
55694 			(void*)&&ZEND_NULL_LABEL,
55695 			(void*)&&ZEND_NULL_LABEL,
55696 			(void*)&&ZEND_NULL_LABEL,
55697 			(void*)&&ZEND_NULL_LABEL,
55698 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_LABEL,
55699 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_LABEL,
55700 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_LABEL,
55701 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_LABEL,
55702 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_LABEL,
55703 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_LABEL,
55704 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_LABEL,
55705 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_LABEL,
55706 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_LABEL,
55707 			(void*)&&ZEND_NULL_LABEL,
55708 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_LABEL,
55709 			(void*)&&ZEND_NULL_LABEL,
55710 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_LABEL,
55711 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_LABEL,
55712 			(void*)&&ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_LABEL,
55713 			(void*)&&ZEND_NULL_LABEL,
55714 			(void*)&&ZEND_NULL_LABEL,
55715 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_LABEL,
55716 			(void*)&&ZEND_NULL_LABEL,
55717 			(void*)&&ZEND_NULL_LABEL,
55718 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55719 			(void*)&&ZEND_NULL_LABEL,
55720 			(void*)&&ZEND_NULL_LABEL,
55721 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55722 			(void*)&&ZEND_NULL_LABEL,
55723 			(void*)&&ZEND_NULL_LABEL,
55724 			(void*)&&ZEND_NULL_LABEL,
55725 			(void*)&&ZEND_NULL_LABEL,
55726 			(void*)&&ZEND_NULL_LABEL,
55727 			(void*)&&ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_LABEL,
55728 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_LABEL,
55729 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_LABEL,
55730 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_LABEL,
55731 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_LABEL,
55732 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_LABEL,
55733 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_LABEL,
55734 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_LABEL,
55735 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_LABEL,
55736 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_LABEL,
55737 			(void*)&&ZEND_NULL_LABEL,
55738 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_LABEL,
55739 			(void*)&&ZEND_NULL_LABEL,
55740 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_LABEL,
55741 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_LABEL,
55742 			(void*)&&ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_LABEL,
55743 			(void*)&&ZEND_NULL_LABEL,
55744 			(void*)&&ZEND_NULL_LABEL,
55745 			(void*)&&ZEND_NULL_LABEL,
55746 			(void*)&&ZEND_NULL_LABEL,
55747 			(void*)&&ZEND_NULL_LABEL,
55748 			(void*)&&ZEND_NULL_LABEL,
55749 			(void*)&&ZEND_NULL_LABEL,
55750 			(void*)&&ZEND_NULL_LABEL,
55751 			(void*)&&ZEND_NULL_LABEL,
55752 			(void*)&&ZEND_NULL_LABEL,
55753 			(void*)&&ZEND_NULL_LABEL,
55754 			(void*)&&ZEND_NULL_LABEL,
55755 			(void*)&&ZEND_NULL_LABEL,
55756 			(void*)&&ZEND_NULL_LABEL,
55757 			(void*)&&ZEND_NULL_LABEL,
55758 			(void*)&&ZEND_NULL_LABEL,
55759 			(void*)&&ZEND_NULL_LABEL,
55760 			(void*)&&ZEND_NULL_LABEL,
55761 			(void*)&&ZEND_NULL_LABEL,
55762 			(void*)&&ZEND_NULL_LABEL,
55763 			(void*)&&ZEND_NULL_LABEL,
55764 			(void*)&&ZEND_NULL_LABEL,
55765 			(void*)&&ZEND_NULL_LABEL,
55766 			(void*)&&ZEND_NULL_LABEL,
55767 			(void*)&&ZEND_NULL_LABEL,
55768 			(void*)&&ZEND_NULL_LABEL,
55769 			(void*)&&ZEND_NULL_LABEL,
55770 			(void*)&&ZEND_NULL_LABEL,
55771 			(void*)&&ZEND_NULL_LABEL,
55772 			(void*)&&ZEND_NULL_LABEL,
55773 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_LABEL,
55774 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_LABEL,
55775 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_LABEL,
55776 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_LABEL,
55777 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_LABEL,
55778 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_LABEL,
55779 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_LABEL,
55780 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_LABEL,
55781 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_LABEL,
55782 			(void*)&&ZEND_NULL_LABEL,
55783 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_LABEL,
55784 			(void*)&&ZEND_NULL_LABEL,
55785 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_LABEL,
55786 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_LABEL,
55787 			(void*)&&ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_LABEL,
55788 			(void*)&&ZEND_NULL_LABEL,
55789 			(void*)&&ZEND_NULL_LABEL,
55790 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_LABEL,
55791 			(void*)&&ZEND_NULL_LABEL,
55792 			(void*)&&ZEND_NULL_LABEL,
55793 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55794 			(void*)&&ZEND_NULL_LABEL,
55795 			(void*)&&ZEND_NULL_LABEL,
55796 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55797 			(void*)&&ZEND_NULL_LABEL,
55798 			(void*)&&ZEND_NULL_LABEL,
55799 			(void*)&&ZEND_NULL_LABEL,
55800 			(void*)&&ZEND_NULL_LABEL,
55801 			(void*)&&ZEND_NULL_LABEL,
55802 			(void*)&&ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_LABEL,
55803 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_LABEL,
55804 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_LABEL,
55805 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_LABEL,
55806 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_LABEL,
55807 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_LABEL,
55808 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_LABEL,
55809 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_LABEL,
55810 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_LABEL,
55811 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_LABEL,
55812 			(void*)&&ZEND_NULL_LABEL,
55813 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_LABEL,
55814 			(void*)&&ZEND_NULL_LABEL,
55815 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_LABEL,
55816 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_LABEL,
55817 			(void*)&&ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_LABEL,
55818 			(void*)&&ZEND_NULL_LABEL,
55819 			(void*)&&ZEND_NULL_LABEL,
55820 			(void*)&&ZEND_NULL_LABEL,
55821 			(void*)&&ZEND_NULL_LABEL,
55822 			(void*)&&ZEND_NULL_LABEL,
55823 			(void*)&&ZEND_NULL_LABEL,
55824 			(void*)&&ZEND_NULL_LABEL,
55825 			(void*)&&ZEND_NULL_LABEL,
55826 			(void*)&&ZEND_NULL_LABEL,
55827 			(void*)&&ZEND_NULL_LABEL,
55828 			(void*)&&ZEND_NULL_LABEL,
55829 			(void*)&&ZEND_NULL_LABEL,
55830 			(void*)&&ZEND_NULL_LABEL,
55831 			(void*)&&ZEND_NULL_LABEL,
55832 			(void*)&&ZEND_NULL_LABEL,
55833 			(void*)&&ZEND_NULL_LABEL,
55834 			(void*)&&ZEND_NULL_LABEL,
55835 			(void*)&&ZEND_NULL_LABEL,
55836 			(void*)&&ZEND_NULL_LABEL,
55837 			(void*)&&ZEND_NULL_LABEL,
55838 			(void*)&&ZEND_NULL_LABEL,
55839 			(void*)&&ZEND_NULL_LABEL,
55840 			(void*)&&ZEND_NULL_LABEL,
55841 			(void*)&&ZEND_NULL_LABEL,
55842 			(void*)&&ZEND_NULL_LABEL,
55843 			(void*)&&ZEND_NULL_LABEL,
55844 			(void*)&&ZEND_NULL_LABEL,
55845 			(void*)&&ZEND_NULL_LABEL,
55846 			(void*)&&ZEND_NULL_LABEL,
55847 			(void*)&&ZEND_NULL_LABEL,
55848 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_LABEL,
55849 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_LABEL,
55850 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_LABEL,
55851 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_LABEL,
55852 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_LABEL,
55853 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_LABEL,
55854 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_LABEL,
55855 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_LABEL,
55856 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_LABEL,
55857 			(void*)&&ZEND_NULL_LABEL,
55858 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_LABEL,
55859 			(void*)&&ZEND_NULL_LABEL,
55860 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_LABEL,
55861 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_LABEL,
55862 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_LABEL,
55863 			(void*)&&ZEND_NULL_LABEL,
55864 			(void*)&&ZEND_NULL_LABEL,
55865 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_LABEL,
55866 			(void*)&&ZEND_NULL_LABEL,
55867 			(void*)&&ZEND_NULL_LABEL,
55868 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55869 			(void*)&&ZEND_NULL_LABEL,
55870 			(void*)&&ZEND_NULL_LABEL,
55871 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55872 			(void*)&&ZEND_NULL_LABEL,
55873 			(void*)&&ZEND_NULL_LABEL,
55874 			(void*)&&ZEND_NULL_LABEL,
55875 			(void*)&&ZEND_NULL_LABEL,
55876 			(void*)&&ZEND_NULL_LABEL,
55877 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_LABEL,
55878 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_LABEL,
55879 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_LABEL,
55880 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_LABEL,
55881 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_LABEL,
55882 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_LABEL,
55883 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_LABEL,
55884 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_LABEL,
55885 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_LABEL,
55886 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_LABEL,
55887 			(void*)&&ZEND_NULL_LABEL,
55888 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_LABEL,
55889 			(void*)&&ZEND_NULL_LABEL,
55890 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_LABEL,
55891 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_LABEL,
55892 			(void*)&&ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_LABEL,
55893 			(void*)&&ZEND_NULL_LABEL,
55894 			(void*)&&ZEND_NULL_LABEL,
55895 			(void*)&&ZEND_NULL_LABEL,
55896 			(void*)&&ZEND_NULL_LABEL,
55897 			(void*)&&ZEND_NULL_LABEL,
55898 			(void*)&&ZEND_NULL_LABEL,
55899 			(void*)&&ZEND_NULL_LABEL,
55900 			(void*)&&ZEND_NULL_LABEL,
55901 			(void*)&&ZEND_NULL_LABEL,
55902 			(void*)&&ZEND_NULL_LABEL,
55903 			(void*)&&ZEND_NULL_LABEL,
55904 			(void*)&&ZEND_NULL_LABEL,
55905 			(void*)&&ZEND_NULL_LABEL,
55906 			(void*)&&ZEND_NULL_LABEL,
55907 			(void*)&&ZEND_NULL_LABEL,
55908 			(void*)&&ZEND_NULL_LABEL,
55909 			(void*)&&ZEND_NULL_LABEL,
55910 			(void*)&&ZEND_NULL_LABEL,
55911 			(void*)&&ZEND_NULL_LABEL,
55912 			(void*)&&ZEND_NULL_LABEL,
55913 			(void*)&&ZEND_NULL_LABEL,
55914 			(void*)&&ZEND_NULL_LABEL,
55915 			(void*)&&ZEND_NULL_LABEL,
55916 			(void*)&&ZEND_NULL_LABEL,
55917 			(void*)&&ZEND_NULL_LABEL,
55918 			(void*)&&ZEND_NULL_LABEL,
55919 			(void*)&&ZEND_NULL_LABEL,
55920 			(void*)&&ZEND_NULL_LABEL,
55921 			(void*)&&ZEND_NULL_LABEL,
55922 			(void*)&&ZEND_NULL_LABEL,
55923 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_LABEL,
55924 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_LABEL,
55925 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_LABEL,
55926 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_LABEL,
55927 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_LABEL,
55928 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_LABEL,
55929 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_LABEL,
55930 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_LABEL,
55931 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_LABEL,
55932 			(void*)&&ZEND_NULL_LABEL,
55933 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_LABEL,
55934 			(void*)&&ZEND_NULL_LABEL,
55935 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_LABEL,
55936 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_LABEL,
55937 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_LABEL,
55938 			(void*)&&ZEND_NULL_LABEL,
55939 			(void*)&&ZEND_NULL_LABEL,
55940 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_LABEL,
55941 			(void*)&&ZEND_NULL_LABEL,
55942 			(void*)&&ZEND_NULL_LABEL,
55943 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55944 			(void*)&&ZEND_NULL_LABEL,
55945 			(void*)&&ZEND_NULL_LABEL,
55946 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
55947 			(void*)&&ZEND_NULL_LABEL,
55948 			(void*)&&ZEND_NULL_LABEL,
55949 			(void*)&&ZEND_NULL_LABEL,
55950 			(void*)&&ZEND_NULL_LABEL,
55951 			(void*)&&ZEND_NULL_LABEL,
55952 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_LABEL,
55953 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_LABEL,
55954 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_LABEL,
55955 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_LABEL,
55956 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_LABEL,
55957 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_LABEL,
55958 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_LABEL,
55959 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_LABEL,
55960 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_LABEL,
55961 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_LABEL,
55962 			(void*)&&ZEND_NULL_LABEL,
55963 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_LABEL,
55964 			(void*)&&ZEND_NULL_LABEL,
55965 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_LABEL,
55966 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_LABEL,
55967 			(void*)&&ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_LABEL,
55968 			(void*)&&ZEND_NULL_LABEL,
55969 			(void*)&&ZEND_NULL_LABEL,
55970 			(void*)&&ZEND_NULL_LABEL,
55971 			(void*)&&ZEND_NULL_LABEL,
55972 			(void*)&&ZEND_NULL_LABEL,
55973 			(void*)&&ZEND_NULL_LABEL,
55974 			(void*)&&ZEND_NULL_LABEL,
55975 			(void*)&&ZEND_NULL_LABEL,
55976 			(void*)&&ZEND_NULL_LABEL,
55977 			(void*)&&ZEND_NULL_LABEL,
55978 			(void*)&&ZEND_NULL_LABEL,
55979 			(void*)&&ZEND_NULL_LABEL,
55980 			(void*)&&ZEND_NULL_LABEL,
55981 			(void*)&&ZEND_NULL_LABEL,
55982 			(void*)&&ZEND_NULL_LABEL,
55983 			(void*)&&ZEND_NULL_LABEL,
55984 			(void*)&&ZEND_NULL_LABEL,
55985 			(void*)&&ZEND_NULL_LABEL,
55986 			(void*)&&ZEND_NULL_LABEL,
55987 			(void*)&&ZEND_NULL_LABEL,
55988 			(void*)&&ZEND_NULL_LABEL,
55989 			(void*)&&ZEND_NULL_LABEL,
55990 			(void*)&&ZEND_NULL_LABEL,
55991 			(void*)&&ZEND_NULL_LABEL,
55992 			(void*)&&ZEND_NULL_LABEL,
55993 			(void*)&&ZEND_NULL_LABEL,
55994 			(void*)&&ZEND_NULL_LABEL,
55995 			(void*)&&ZEND_NULL_LABEL,
55996 			(void*)&&ZEND_NULL_LABEL,
55997 			(void*)&&ZEND_NULL_LABEL,
55998 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_LABEL,
55999 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_LABEL,
56000 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_LABEL,
56001 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_LABEL,
56002 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_LABEL,
56003 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_LABEL,
56004 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_LABEL,
56005 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_LABEL,
56006 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_LABEL,
56007 			(void*)&&ZEND_NULL_LABEL,
56008 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_LABEL,
56009 			(void*)&&ZEND_NULL_LABEL,
56010 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_LABEL,
56011 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_LABEL,
56012 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_LABEL,
56013 			(void*)&&ZEND_NULL_LABEL,
56014 			(void*)&&ZEND_NULL_LABEL,
56015 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_LABEL,
56016 			(void*)&&ZEND_NULL_LABEL,
56017 			(void*)&&ZEND_NULL_LABEL,
56018 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
56019 			(void*)&&ZEND_NULL_LABEL,
56020 			(void*)&&ZEND_NULL_LABEL,
56021 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
56022 			(void*)&&ZEND_NULL_LABEL,
56023 			(void*)&&ZEND_NULL_LABEL,
56024 			(void*)&&ZEND_NULL_LABEL,
56025 			(void*)&&ZEND_NULL_LABEL,
56026 			(void*)&&ZEND_NULL_LABEL,
56027 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_LABEL,
56028 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_LABEL,
56029 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_LABEL,
56030 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_LABEL,
56031 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_LABEL,
56032 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_LABEL,
56033 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_LABEL,
56034 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_LABEL,
56035 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_LABEL,
56036 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_LABEL,
56037 			(void*)&&ZEND_NULL_LABEL,
56038 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_LABEL,
56039 			(void*)&&ZEND_NULL_LABEL,
56040 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_LABEL,
56041 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_LABEL,
56042 			(void*)&&ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_LABEL,
56043 			(void*)&&ZEND_NULL_LABEL,
56044 			(void*)&&ZEND_NULL_LABEL,
56045 			(void*)&&ZEND_NULL_LABEL,
56046 			(void*)&&ZEND_NULL_LABEL,
56047 			(void*)&&ZEND_NULL_LABEL,
56048 			(void*)&&ZEND_NULL_LABEL,
56049 			(void*)&&ZEND_NULL_LABEL,
56050 			(void*)&&ZEND_NULL_LABEL,
56051 			(void*)&&ZEND_NULL_LABEL,
56052 			(void*)&&ZEND_NULL_LABEL,
56053 			(void*)&&ZEND_NULL_LABEL,
56054 			(void*)&&ZEND_NULL_LABEL,
56055 			(void*)&&ZEND_NULL_LABEL,
56056 			(void*)&&ZEND_NULL_LABEL,
56057 			(void*)&&ZEND_NULL_LABEL,
56058 			(void*)&&ZEND_NULL_LABEL,
56059 			(void*)&&ZEND_NULL_LABEL,
56060 			(void*)&&ZEND_NULL_LABEL,
56061 			(void*)&&ZEND_NULL_LABEL,
56062 			(void*)&&ZEND_NULL_LABEL,
56063 			(void*)&&ZEND_NULL_LABEL,
56064 			(void*)&&ZEND_NULL_LABEL,
56065 			(void*)&&ZEND_NULL_LABEL,
56066 			(void*)&&ZEND_NULL_LABEL,
56067 			(void*)&&ZEND_NULL_LABEL,
56068 			(void*)&&ZEND_NULL_LABEL,
56069 			(void*)&&ZEND_NULL_LABEL,
56070 			(void*)&&ZEND_NULL_LABEL,
56071 			(void*)&&ZEND_NULL_LABEL,
56072 			(void*)&&ZEND_NULL_LABEL,
56073 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_LABEL,
56074 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_LABEL,
56075 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_LABEL,
56076 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_LABEL,
56077 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_LABEL,
56078 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_LABEL,
56079 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_LABEL,
56080 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_LABEL,
56081 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_LABEL,
56082 			(void*)&&ZEND_NULL_LABEL,
56083 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_LABEL,
56084 			(void*)&&ZEND_NULL_LABEL,
56085 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_LABEL,
56086 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_LABEL,
56087 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_LABEL,
56088 			(void*)&&ZEND_NULL_LABEL,
56089 			(void*)&&ZEND_NULL_LABEL,
56090 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_LABEL,
56091 			(void*)&&ZEND_NULL_LABEL,
56092 			(void*)&&ZEND_NULL_LABEL,
56093 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
56094 			(void*)&&ZEND_NULL_LABEL,
56095 			(void*)&&ZEND_NULL_LABEL,
56096 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
56097 			(void*)&&ZEND_NULL_LABEL,
56098 			(void*)&&ZEND_NULL_LABEL,
56099 			(void*)&&ZEND_NULL_LABEL,
56100 			(void*)&&ZEND_NULL_LABEL,
56101 			(void*)&&ZEND_NULL_LABEL,
56102 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_LABEL,
56103 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_LABEL,
56104 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_LABEL,
56105 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_LABEL,
56106 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_LABEL,
56107 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_LABEL,
56108 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_LABEL,
56109 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_LABEL,
56110 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_LABEL,
56111 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_LABEL,
56112 			(void*)&&ZEND_NULL_LABEL,
56113 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_LABEL,
56114 			(void*)&&ZEND_NULL_LABEL,
56115 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_LABEL,
56116 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_LABEL,
56117 			(void*)&&ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_LABEL,
56118 			(void*)&&ZEND_NULL_LABEL,
56119 			(void*)&&ZEND_NULL_LABEL,
56120 			(void*)&&ZEND_NULL_LABEL,
56121 			(void*)&&ZEND_NULL_LABEL,
56122 			(void*)&&ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_LABEL,
56123 			(void*)&&ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_LABEL,
56124 			(void*)&&ZEND_NULL_LABEL,
56125 			(void*)&&ZEND_NULL_LABEL,
56126 			(void*)&&ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_LABEL,
56127 			(void*)&&ZEND_PRE_INC_SPEC_CV_RETVAL_USED_LABEL,
56128 			(void*)&&ZEND_NULL_LABEL,
56129 			(void*)&&ZEND_NULL_LABEL,
56130 			(void*)&&ZEND_NULL_LABEL,
56131 			(void*)&&ZEND_NULL_LABEL,
56132 			(void*)&&ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_LABEL,
56133 			(void*)&&ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_LABEL,
56134 			(void*)&&ZEND_NULL_LABEL,
56135 			(void*)&&ZEND_NULL_LABEL,
56136 			(void*)&&ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_LABEL,
56137 			(void*)&&ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_LABEL,
56138 			(void*)&&ZEND_NULL_LABEL,
56139 			(void*)&&ZEND_NULL_LABEL,
56140 			(void*)&&ZEND_POST_INC_SPEC_VAR_LABEL,
56141 			(void*)&&ZEND_NULL_LABEL,
56142 			(void*)&&ZEND_POST_INC_SPEC_CV_LABEL,
56143 			(void*)&&ZEND_NULL_LABEL,
56144 			(void*)&&ZEND_NULL_LABEL,
56145 			(void*)&&ZEND_POST_DEC_SPEC_VAR_LABEL,
56146 			(void*)&&ZEND_NULL_LABEL,
56147 			(void*)&&ZEND_POST_DEC_SPEC_CV_LABEL,
56148 			(void*)&&ZEND_NULL_LABEL,
56149 			(void*)&&ZEND_NULL_LABEL,
56150 			(void*)&&ZEND_NULL_LABEL,
56151 			(void*)&&ZEND_NULL_LABEL,
56152 			(void*)&&ZEND_NULL_LABEL,
56153 			(void*)&&ZEND_NULL_LABEL,
56154 			(void*)&&ZEND_NULL_LABEL,
56155 			(void*)&&ZEND_NULL_LABEL,
56156 			(void*)&&ZEND_NULL_LABEL,
56157 			(void*)&&ZEND_NULL_LABEL,
56158 			(void*)&&ZEND_NULL_LABEL,
56159 			(void*)&&ZEND_NULL_LABEL,
56160 			(void*)&&ZEND_NULL_LABEL,
56161 			(void*)&&ZEND_NULL_LABEL,
56162 			(void*)&&ZEND_NULL_LABEL,
56163 			(void*)&&ZEND_NULL_LABEL,
56164 			(void*)&&ZEND_NULL_LABEL,
56165 			(void*)&&ZEND_NULL_LABEL,
56166 			(void*)&&ZEND_NULL_LABEL,
56167 			(void*)&&ZEND_NULL_LABEL,
56168 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_LABEL,
56169 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_LABEL,
56170 			(void*)&&ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_LABEL,
56171 			(void*)&&ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_LABEL,
56172 			(void*)&&ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_LABEL,
56173 			(void*)&&ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_LABEL,
56174 			(void*)&&ZEND_NULL_LABEL,
56175 			(void*)&&ZEND_NULL_LABEL,
56176 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_LABEL,
56177 			(void*)&&ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_LABEL,
56178 			(void*)&&ZEND_NULL_LABEL,
56179 			(void*)&&ZEND_NULL_LABEL,
56180 			(void*)&&ZEND_NULL_LABEL,
56181 			(void*)&&ZEND_NULL_LABEL,
56182 			(void*)&&ZEND_NULL_LABEL,
56183 			(void*)&&ZEND_NULL_LABEL,
56184 			(void*)&&ZEND_NULL_LABEL,
56185 			(void*)&&ZEND_NULL_LABEL,
56186 			(void*)&&ZEND_NULL_LABEL,
56187 			(void*)&&ZEND_NULL_LABEL,
56188 			(void*)&&ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_LABEL,
56189 			(void*)&&ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_LABEL,
56190 			(void*)&&ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_LABEL,
56191 			(void*)&&ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_LABEL,
56192 			(void*)&&ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_LABEL,
56193 			(void*)&&ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_LABEL,
56194 			(void*)&&ZEND_NULL_LABEL,
56195 			(void*)&&ZEND_NULL_LABEL,
56196 			(void*)&&ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_LABEL,
56197 			(void*)&&ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_LABEL,
56198 			(void*)&&ZEND_NULL_LABEL,
56199 			(void*)&&ZEND_NULL_LABEL,
56200 			(void*)&&ZEND_NULL_LABEL,
56201 			(void*)&&ZEND_NULL_LABEL,
56202 			(void*)&&ZEND_NULL_LABEL,
56203 			(void*)&&ZEND_NULL_LABEL,
56204 			(void*)&&ZEND_NULL_LABEL,
56205 			(void*)&&ZEND_NULL_LABEL,
56206 			(void*)&&ZEND_NULL_LABEL,
56207 			(void*)&&ZEND_NULL_LABEL,
56208 			(void*)&&ZEND_NULL_LABEL,
56209 			(void*)&&ZEND_NULL_LABEL,
56210 			(void*)&&ZEND_ASSIGN_REF_SPEC_VAR_VAR_LABEL,
56211 			(void*)&&ZEND_NULL_LABEL,
56212 			(void*)&&ZEND_ASSIGN_REF_SPEC_VAR_CV_LABEL,
56213 			(void*)&&ZEND_NULL_LABEL,
56214 			(void*)&&ZEND_NULL_LABEL,
56215 			(void*)&&ZEND_NULL_LABEL,
56216 			(void*)&&ZEND_NULL_LABEL,
56217 			(void*)&&ZEND_NULL_LABEL,
56218 			(void*)&&ZEND_NULL_LABEL,
56219 			(void*)&&ZEND_NULL_LABEL,
56220 			(void*)&&ZEND_ASSIGN_REF_SPEC_CV_VAR_LABEL,
56221 			(void*)&&ZEND_NULL_LABEL,
56222 			(void*)&&ZEND_ASSIGN_REF_SPEC_CV_CV_LABEL,
56223 			(void*)&&ZEND_ECHO_SPEC_CONST_LABEL,
56224 			(void*)&&ZEND_ECHO_SPEC_TMPVAR_LABEL,
56225 			(void*)&&ZEND_ECHO_SPEC_TMPVAR_LABEL,
56226 			(void*)&&ZEND_NULL_LABEL,
56227 			(void*)&&ZEND_ECHO_SPEC_CV_LABEL,
56228 			(void*)&&ZEND_GENERATOR_CREATE_SPEC_LABEL,
56229 			(void*)&&ZEND_JMP_SPEC_LABEL,
56230 			(void*)&&ZEND_JMPZ_SPEC_CONST_LABEL,
56231 			(void*)&&ZEND_JMPZ_SPEC_TMPVAR_LABEL,
56232 			(void*)&&ZEND_JMPZ_SPEC_TMPVAR_LABEL,
56233 			(void*)&&ZEND_NULL_LABEL,
56234 			(void*)&&ZEND_JMPZ_SPEC_CV_LABEL,
56235 			(void*)&&ZEND_JMPNZ_SPEC_CONST_LABEL,
56236 			(void*)&&ZEND_JMPNZ_SPEC_TMPVAR_LABEL,
56237 			(void*)&&ZEND_JMPNZ_SPEC_TMPVAR_LABEL,
56238 			(void*)&&ZEND_NULL_LABEL,
56239 			(void*)&&ZEND_JMPNZ_SPEC_CV_LABEL,
56240 			(void*)&&ZEND_JMPZNZ_SPEC_CONST_LABEL,
56241 			(void*)&&ZEND_JMPZNZ_SPEC_TMPVAR_LABEL,
56242 			(void*)&&ZEND_JMPZNZ_SPEC_TMPVAR_LABEL,
56243 			(void*)&&ZEND_NULL_LABEL,
56244 			(void*)&&ZEND_JMPZNZ_SPEC_CV_LABEL,
56245 			(void*)&&ZEND_JMPZ_EX_SPEC_CONST_LABEL,
56246 			(void*)&&ZEND_JMPZ_EX_SPEC_TMPVAR_LABEL,
56247 			(void*)&&ZEND_JMPZ_EX_SPEC_TMPVAR_LABEL,
56248 			(void*)&&ZEND_NULL_LABEL,
56249 			(void*)&&ZEND_JMPZ_EX_SPEC_CV_LABEL,
56250 			(void*)&&ZEND_JMPNZ_EX_SPEC_CONST_LABEL,
56251 			(void*)&&ZEND_JMPNZ_EX_SPEC_TMPVAR_LABEL,
56252 			(void*)&&ZEND_JMPNZ_EX_SPEC_TMPVAR_LABEL,
56253 			(void*)&&ZEND_NULL_LABEL,
56254 			(void*)&&ZEND_JMPNZ_EX_SPEC_CV_LABEL,
56255 			(void*)&&ZEND_CASE_SPEC_CONST_CONST_LABEL,
56256 			(void*)&&ZEND_CASE_SPEC_CONST_TMPVAR_LABEL,
56257 			(void*)&&ZEND_CASE_SPEC_CONST_TMPVAR_LABEL,
56258 			(void*)&&ZEND_NULL_LABEL,
56259 			(void*)&&ZEND_CASE_SPEC_CONST_CV_LABEL,
56260 			(void*)&&ZEND_CASE_SPEC_TMPVAR_CONST_LABEL,
56261 			(void*)&&ZEND_CASE_SPEC_TMPVAR_TMPVAR_LABEL,
56262 			(void*)&&ZEND_CASE_SPEC_TMPVAR_TMPVAR_LABEL,
56263 			(void*)&&ZEND_NULL_LABEL,
56264 			(void*)&&ZEND_CASE_SPEC_TMPVAR_CV_LABEL,
56265 			(void*)&&ZEND_CASE_SPEC_TMPVAR_CONST_LABEL,
56266 			(void*)&&ZEND_CASE_SPEC_TMPVAR_TMPVAR_LABEL,
56267 			(void*)&&ZEND_CASE_SPEC_TMPVAR_TMPVAR_LABEL,
56268 			(void*)&&ZEND_NULL_LABEL,
56269 			(void*)&&ZEND_CASE_SPEC_TMPVAR_CV_LABEL,
56270 			(void*)&&ZEND_NULL_LABEL,
56271 			(void*)&&ZEND_NULL_LABEL,
56272 			(void*)&&ZEND_NULL_LABEL,
56273 			(void*)&&ZEND_NULL_LABEL,
56274 			(void*)&&ZEND_NULL_LABEL,
56275 			(void*)&&ZEND_CASE_SPEC_CV_CONST_LABEL,
56276 			(void*)&&ZEND_CASE_SPEC_CV_TMPVAR_LABEL,
56277 			(void*)&&ZEND_CASE_SPEC_CV_TMPVAR_LABEL,
56278 			(void*)&&ZEND_NULL_LABEL,
56279 			(void*)&&ZEND_CASE_SPEC_CV_CV_LABEL,
56280 			(void*)&&ZEND_NULL_LABEL,
56281 			(void*)&&ZEND_NULL_LABEL,
56282 			(void*)&&ZEND_NULL_LABEL,
56283 			(void*)&&ZEND_NULL_LABEL,
56284 			(void*)&&ZEND_NULL_LABEL,
56285 			(void*)&&ZEND_NULL_LABEL,
56286 			(void*)&&ZEND_NULL_LABEL,
56287 			(void*)&&ZEND_NULL_LABEL,
56288 			(void*)&&ZEND_NULL_LABEL,
56289 			(void*)&&ZEND_NULL_LABEL,
56290 			(void*)&&ZEND_NULL_LABEL,
56291 			(void*)&&ZEND_NULL_LABEL,
56292 			(void*)&&ZEND_NULL_LABEL,
56293 			(void*)&&ZEND_NULL_LABEL,
56294 			(void*)&&ZEND_NULL_LABEL,
56295 			(void*)&&ZEND_NULL_LABEL,
56296 			(void*)&&ZEND_NULL_LABEL,
56297 			(void*)&&ZEND_NULL_LABEL,
56298 			(void*)&&ZEND_NULL_LABEL,
56299 			(void*)&&ZEND_NULL_LABEL,
56300 			(void*)&&ZEND_NULL_LABEL,
56301 			(void*)&&ZEND_NULL_LABEL,
56302 			(void*)&&ZEND_NULL_LABEL,
56303 			(void*)&&ZEND_CHECK_VAR_SPEC_CV_UNUSED_LABEL,
56304 			(void*)&&ZEND_NULL_LABEL,
56305 			(void*)&&ZEND_NULL_LABEL,
56306 			(void*)&&ZEND_NULL_LABEL,
56307 			(void*)&&ZEND_NULL_LABEL,
56308 			(void*)&&ZEND_NULL_LABEL,
56309 			(void*)&&ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_LABEL,
56310 			(void*)&&ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_LABEL,
56311 			(void*)&&ZEND_NULL_LABEL,
56312 			(void*)&&ZEND_NULL_LABEL,
56313 			(void*)&&ZEND_NULL_LABEL,
56314 			(void*)&&ZEND_NULL_LABEL,
56315 			(void*)&&ZEND_NULL_LABEL,
56316 			(void*)&&ZEND_NULL_LABEL,
56317 			(void*)&&ZEND_NULL_LABEL,
56318 			(void*)&&ZEND_NULL_LABEL,
56319 			(void*)&&ZEND_NULL_LABEL,
56320 			(void*)&&ZEND_NULL_LABEL,
56321 			(void*)&&ZEND_NULL_LABEL,
56322 			(void*)&&ZEND_NULL_LABEL,
56323 			(void*)&&ZEND_NULL_LABEL,
56324 			(void*)&&ZEND_NULL_LABEL,
56325 			(void*)&&ZEND_NULL_LABEL,
56326 			(void*)&&ZEND_NULL_LABEL,
56327 			(void*)&&ZEND_NULL_LABEL,
56328 			(void*)&&ZEND_MAKE_REF_SPEC_VAR_UNUSED_LABEL,
56329 			(void*)&&ZEND_NULL_LABEL,
56330 			(void*)&&ZEND_NULL_LABEL,
56331 			(void*)&&ZEND_NULL_LABEL,
56332 			(void*)&&ZEND_NULL_LABEL,
56333 			(void*)&&ZEND_NULL_LABEL,
56334 			(void*)&&ZEND_NULL_LABEL,
56335 			(void*)&&ZEND_NULL_LABEL,
56336 			(void*)&&ZEND_NULL_LABEL,
56337 			(void*)&&ZEND_NULL_LABEL,
56338 			(void*)&&ZEND_MAKE_REF_SPEC_CV_UNUSED_LABEL,
56339 			(void*)&&ZEND_NULL_LABEL,
56340 			(void*)&&ZEND_BOOL_SPEC_CONST_LABEL,
56341 			(void*)&&ZEND_BOOL_SPEC_TMPVAR_LABEL,
56342 			(void*)&&ZEND_BOOL_SPEC_TMPVAR_LABEL,
56343 			(void*)&&ZEND_NULL_LABEL,
56344 			(void*)&&ZEND_BOOL_SPEC_CV_LABEL,
56345 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_CONST_LABEL,
56346 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_LABEL,
56347 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_LABEL,
56348 			(void*)&&ZEND_NULL_LABEL,
56349 			(void*)&&ZEND_FAST_CONCAT_SPEC_CONST_CV_LABEL,
56350 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_LABEL,
56351 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
56352 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
56353 			(void*)&&ZEND_NULL_LABEL,
56354 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_LABEL,
56355 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_LABEL,
56356 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
56357 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_LABEL,
56358 			(void*)&&ZEND_NULL_LABEL,
56359 			(void*)&&ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_LABEL,
56360 			(void*)&&ZEND_NULL_LABEL,
56361 			(void*)&&ZEND_NULL_LABEL,
56362 			(void*)&&ZEND_NULL_LABEL,
56363 			(void*)&&ZEND_NULL_LABEL,
56364 			(void*)&&ZEND_NULL_LABEL,
56365 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_CONST_LABEL,
56366 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_LABEL,
56367 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_LABEL,
56368 			(void*)&&ZEND_NULL_LABEL,
56369 			(void*)&&ZEND_FAST_CONCAT_SPEC_CV_CV_LABEL,
56370 			(void*)&&ZEND_NULL_LABEL,
56371 			(void*)&&ZEND_NULL_LABEL,
56372 			(void*)&&ZEND_NULL_LABEL,
56373 			(void*)&&ZEND_NULL_LABEL,
56374 			(void*)&&ZEND_NULL_LABEL,
56375 			(void*)&&ZEND_NULL_LABEL,
56376 			(void*)&&ZEND_NULL_LABEL,
56377 			(void*)&&ZEND_NULL_LABEL,
56378 			(void*)&&ZEND_NULL_LABEL,
56379 			(void*)&&ZEND_NULL_LABEL,
56380 			(void*)&&ZEND_NULL_LABEL,
56381 			(void*)&&ZEND_NULL_LABEL,
56382 			(void*)&&ZEND_NULL_LABEL,
56383 			(void*)&&ZEND_NULL_LABEL,
56384 			(void*)&&ZEND_NULL_LABEL,
56385 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_CONST_LABEL,
56386 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_LABEL,
56387 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_LABEL,
56388 			(void*)&&ZEND_NULL_LABEL,
56389 			(void*)&&ZEND_ROPE_INIT_SPEC_UNUSED_CV_LABEL,
56390 			(void*)&&ZEND_NULL_LABEL,
56391 			(void*)&&ZEND_NULL_LABEL,
56392 			(void*)&&ZEND_NULL_LABEL,
56393 			(void*)&&ZEND_NULL_LABEL,
56394 			(void*)&&ZEND_NULL_LABEL,
56395 			(void*)&&ZEND_NULL_LABEL,
56396 			(void*)&&ZEND_NULL_LABEL,
56397 			(void*)&&ZEND_NULL_LABEL,
56398 			(void*)&&ZEND_NULL_LABEL,
56399 			(void*)&&ZEND_NULL_LABEL,
56400 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_CONST_LABEL,
56401 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_LABEL,
56402 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_LABEL,
56403 			(void*)&&ZEND_NULL_LABEL,
56404 			(void*)&&ZEND_ROPE_ADD_SPEC_TMP_CV_LABEL,
56405 			(void*)&&ZEND_NULL_LABEL,
56406 			(void*)&&ZEND_NULL_LABEL,
56407 			(void*)&&ZEND_NULL_LABEL,
56408 			(void*)&&ZEND_NULL_LABEL,
56409 			(void*)&&ZEND_NULL_LABEL,
56410 			(void*)&&ZEND_NULL_LABEL,
56411 			(void*)&&ZEND_NULL_LABEL,
56412 			(void*)&&ZEND_NULL_LABEL,
56413 			(void*)&&ZEND_NULL_LABEL,
56414 			(void*)&&ZEND_NULL_LABEL,
56415 			(void*)&&ZEND_NULL_LABEL,
56416 			(void*)&&ZEND_NULL_LABEL,
56417 			(void*)&&ZEND_NULL_LABEL,
56418 			(void*)&&ZEND_NULL_LABEL,
56419 			(void*)&&ZEND_NULL_LABEL,
56420 			(void*)&&ZEND_NULL_LABEL,
56421 			(void*)&&ZEND_NULL_LABEL,
56422 			(void*)&&ZEND_NULL_LABEL,
56423 			(void*)&&ZEND_NULL_LABEL,
56424 			(void*)&&ZEND_NULL_LABEL,
56425 			(void*)&&ZEND_ROPE_END_SPEC_TMP_CONST_LABEL,
56426 			(void*)&&ZEND_ROPE_END_SPEC_TMP_TMPVAR_LABEL,
56427 			(void*)&&ZEND_ROPE_END_SPEC_TMP_TMPVAR_LABEL,
56428 			(void*)&&ZEND_NULL_LABEL,
56429 			(void*)&&ZEND_ROPE_END_SPEC_TMP_CV_LABEL,
56430 			(void*)&&ZEND_NULL_LABEL,
56431 			(void*)&&ZEND_NULL_LABEL,
56432 			(void*)&&ZEND_NULL_LABEL,
56433 			(void*)&&ZEND_NULL_LABEL,
56434 			(void*)&&ZEND_NULL_LABEL,
56435 			(void*)&&ZEND_NULL_LABEL,
56436 			(void*)&&ZEND_NULL_LABEL,
56437 			(void*)&&ZEND_NULL_LABEL,
56438 			(void*)&&ZEND_NULL_LABEL,
56439 			(void*)&&ZEND_NULL_LABEL,
56440 			(void*)&&ZEND_NULL_LABEL,
56441 			(void*)&&ZEND_NULL_LABEL,
56442 			(void*)&&ZEND_NULL_LABEL,
56443 			(void*)&&ZEND_NULL_LABEL,
56444 			(void*)&&ZEND_NULL_LABEL,
56445 			(void*)&&ZEND_BEGIN_SILENCE_SPEC_LABEL,
56446 			(void*)&&ZEND_NULL_LABEL,
56447 			(void*)&&ZEND_END_SILENCE_SPEC_TMP_LABEL,
56448 			(void*)&&ZEND_NULL_LABEL,
56449 			(void*)&&ZEND_NULL_LABEL,
56450 			(void*)&&ZEND_NULL_LABEL,
56451 			(void*)&&ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_LABEL,
56452 			(void*)&&ZEND_NULL_LABEL,
56453 			(void*)&&ZEND_NULL_LABEL,
56454 			(void*)&&ZEND_NULL_LABEL,
56455 			(void*)&&ZEND_NULL_LABEL,
56456 			(void*)&&ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_LABEL,
56457 			(void*)&&ZEND_DO_FCALL_SPEC_RETVAL_USED_LABEL,
56458 			(void*)&&ZEND_INIT_FCALL_SPEC_CONST_LABEL,
56459 			(void*)&&ZEND_NULL_LABEL,
56460 			(void*)&&ZEND_NULL_LABEL,
56461 			(void*)&&ZEND_NULL_LABEL,
56462 			(void*)&&ZEND_NULL_LABEL,
56463 			(void*)&&ZEND_RETURN_SPEC_CONST_LABEL,
56464 			(void*)&&ZEND_RETURN_SPEC_TMP_LABEL,
56465 			(void*)&&ZEND_RETURN_SPEC_VAR_LABEL,
56466 			(void*)&&ZEND_NULL_LABEL,
56467 			(void*)&&ZEND_RETURN_SPEC_CV_LABEL,
56468 			(void*)&&ZEND_RECV_SPEC_LABEL,
56469 			(void*)&&ZEND_RECV_INIT_SPEC_CONST_LABEL,
56470 			(void*)&&ZEND_NULL_LABEL,
56471 			(void*)&&ZEND_NULL_LABEL,
56472 			(void*)&&ZEND_NULL_LABEL,
56473 			(void*)&&ZEND_NULL_LABEL,
56474 			(void*)&&ZEND_SEND_VAL_SPEC_CONST_LABEL,
56475 			(void*)&&ZEND_SEND_VAL_SPEC_TMPVAR_LABEL,
56476 			(void*)&&ZEND_SEND_VAL_SPEC_TMPVAR_LABEL,
56477 			(void*)&&ZEND_NULL_LABEL,
56478 			(void*)&&ZEND_NULL_LABEL,
56479 			(void*)&&ZEND_NULL_LABEL,
56480 			(void*)&&ZEND_NULL_LABEL,
56481 			(void*)&&ZEND_NULL_LABEL,
56482 			(void*)&&ZEND_NULL_LABEL,
56483 			(void*)&&ZEND_SEND_VAR_EX_SPEC_VAR_LABEL,
56484 			(void*)&&ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_LABEL,
56485 			(void*)&&ZEND_NULL_LABEL,
56486 			(void*)&&ZEND_NULL_LABEL,
56487 			(void*)&&ZEND_SEND_VAR_EX_SPEC_CV_LABEL,
56488 			(void*)&&ZEND_SEND_VAR_EX_SPEC_CV_QUICK_LABEL,
56489 			(void*)&&ZEND_NULL_LABEL,
56490 			(void*)&&ZEND_NULL_LABEL,
56491 			(void*)&&ZEND_SEND_REF_SPEC_VAR_LABEL,
56492 			(void*)&&ZEND_NULL_LABEL,
56493 			(void*)&&ZEND_SEND_REF_SPEC_CV_LABEL,
56494 			(void*)&&ZEND_NEW_SPEC_CONST_LABEL,
56495 			(void*)&&ZEND_NULL_LABEL,
56496 			(void*)&&ZEND_NEW_SPEC_VAR_LABEL,
56497 			(void*)&&ZEND_NEW_SPEC_UNUSED_LABEL,
56498 			(void*)&&ZEND_NULL_LABEL,
56499 			(void*)&&ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_LABEL,
56500 			(void*)&&ZEND_NULL_LABEL,
56501 			(void*)&&ZEND_NULL_LABEL,
56502 			(void*)&&ZEND_NULL_LABEL,
56503 			(void*)&&ZEND_NULL_LABEL,
56504 			(void*)&&ZEND_NULL_LABEL,
56505 			(void*)&&ZEND_FREE_SPEC_TMPVAR_LABEL,
56506 			(void*)&&ZEND_FREE_SPEC_TMPVAR_LABEL,
56507 			(void*)&&ZEND_NULL_LABEL,
56508 			(void*)&&ZEND_NULL_LABEL,
56509 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_CONST_LABEL,
56510 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_LABEL,
56511 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_LABEL,
56512 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_LABEL,
56513 			(void*)&&ZEND_INIT_ARRAY_SPEC_CONST_CV_LABEL,
56514 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_CONST_LABEL,
56515 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_LABEL,
56516 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_LABEL,
56517 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_LABEL,
56518 			(void*)&&ZEND_INIT_ARRAY_SPEC_TMP_CV_LABEL,
56519 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_CONST_LABEL,
56520 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_LABEL,
56521 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_LABEL,
56522 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_LABEL,
56523 			(void*)&&ZEND_INIT_ARRAY_SPEC_VAR_CV_LABEL,
56524 			(void*)&&ZEND_NULL_LABEL,
56525 			(void*)&&ZEND_NULL_LABEL,
56526 			(void*)&&ZEND_NULL_LABEL,
56527 			(void*)&&ZEND_NULL_LABEL,
56528 			(void*)&&ZEND_NULL_LABEL,
56529 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_CONST_LABEL,
56530 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_LABEL,
56531 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_LABEL,
56532 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_UNUSED_LABEL,
56533 			(void*)&&ZEND_INIT_ARRAY_SPEC_CV_CV_LABEL,
56534 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_LABEL,
56535 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_LABEL,
56536 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_LABEL,
56537 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_LABEL,
56538 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_LABEL,
56539 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_LABEL,
56540 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_LABEL,
56541 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_LABEL,
56542 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_LABEL,
56543 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_LABEL,
56544 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_LABEL,
56545 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_LABEL,
56546 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_LABEL,
56547 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_LABEL,
56548 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_LABEL,
56549 			(void*)&&ZEND_NULL_LABEL,
56550 			(void*)&&ZEND_NULL_LABEL,
56551 			(void*)&&ZEND_NULL_LABEL,
56552 			(void*)&&ZEND_NULL_LABEL,
56553 			(void*)&&ZEND_NULL_LABEL,
56554 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_LABEL,
56555 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_LABEL,
56556 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_LABEL,
56557 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_LABEL,
56558 			(void*)&&ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_LABEL,
56559 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_CONST_LABEL,
56560 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_LABEL,
56561 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_LABEL,
56562 			(void*)&&ZEND_NULL_LABEL,
56563 			(void*)&&ZEND_INCLUDE_OR_EVAL_SPEC_CV_LABEL,
56564 			(void*)&&ZEND_NULL_LABEL,
56565 			(void*)&&ZEND_NULL_LABEL,
56566 			(void*)&&ZEND_NULL_LABEL,
56567 			(void*)&&ZEND_UNSET_VAR_SPEC_CONST_UNUSED_LABEL,
56568 			(void*)&&ZEND_NULL_LABEL,
56569 			(void*)&&ZEND_NULL_LABEL,
56570 			(void*)&&ZEND_NULL_LABEL,
56571 			(void*)&&ZEND_NULL_LABEL,
56572 			(void*)&&ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_LABEL,
56573 			(void*)&&ZEND_NULL_LABEL,
56574 			(void*)&&ZEND_NULL_LABEL,
56575 			(void*)&&ZEND_NULL_LABEL,
56576 			(void*)&&ZEND_NULL_LABEL,
56577 			(void*)&&ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_LABEL,
56578 			(void*)&&ZEND_NULL_LABEL,
56579 			(void*)&&ZEND_NULL_LABEL,
56580 			(void*)&&ZEND_NULL_LABEL,
56581 			(void*)&&ZEND_NULL_LABEL,
56582 			(void*)&&ZEND_NULL_LABEL,
56583 			(void*)&&ZEND_NULL_LABEL,
56584 			(void*)&&ZEND_NULL_LABEL,
56585 			(void*)&&ZEND_NULL_LABEL,
56586 			(void*)&&ZEND_NULL_LABEL,
56587 			(void*)&&ZEND_UNSET_VAR_SPEC_CV_UNUSED_LABEL,
56588 			(void*)&&ZEND_NULL_LABEL,
56589 			(void*)&&ZEND_NULL_LABEL,
56590 			(void*)&&ZEND_NULL_LABEL,
56591 			(void*)&&ZEND_NULL_LABEL,
56592 			(void*)&&ZEND_NULL_LABEL,
56593 			(void*)&&ZEND_NULL_LABEL,
56594 			(void*)&&ZEND_NULL_LABEL,
56595 			(void*)&&ZEND_NULL_LABEL,
56596 			(void*)&&ZEND_NULL_LABEL,
56597 			(void*)&&ZEND_NULL_LABEL,
56598 			(void*)&&ZEND_NULL_LABEL,
56599 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_CONST_LABEL,
56600 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_LABEL,
56601 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_LABEL,
56602 			(void*)&&ZEND_NULL_LABEL,
56603 			(void*)&&ZEND_UNSET_DIM_SPEC_VAR_CV_LABEL,
56604 			(void*)&&ZEND_NULL_LABEL,
56605 			(void*)&&ZEND_NULL_LABEL,
56606 			(void*)&&ZEND_NULL_LABEL,
56607 			(void*)&&ZEND_NULL_LABEL,
56608 			(void*)&&ZEND_NULL_LABEL,
56609 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_CONST_LABEL,
56610 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_TMPVAR_LABEL,
56611 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_TMPVAR_LABEL,
56612 			(void*)&&ZEND_NULL_LABEL,
56613 			(void*)&&ZEND_UNSET_DIM_SPEC_CV_CV_LABEL,
56614 			(void*)&&ZEND_NULL_LABEL,
56615 			(void*)&&ZEND_NULL_LABEL,
56616 			(void*)&&ZEND_NULL_LABEL,
56617 			(void*)&&ZEND_NULL_LABEL,
56618 			(void*)&&ZEND_NULL_LABEL,
56619 			(void*)&&ZEND_NULL_LABEL,
56620 			(void*)&&ZEND_NULL_LABEL,
56621 			(void*)&&ZEND_NULL_LABEL,
56622 			(void*)&&ZEND_NULL_LABEL,
56623 			(void*)&&ZEND_NULL_LABEL,
56624 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_CONST_LABEL,
56625 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_LABEL,
56626 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_LABEL,
56627 			(void*)&&ZEND_NULL_LABEL,
56628 			(void*)&&ZEND_UNSET_OBJ_SPEC_VAR_CV_LABEL,
56629 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_LABEL,
56630 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
56631 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
56632 			(void*)&&ZEND_NULL_LABEL,
56633 			(void*)&&ZEND_UNSET_OBJ_SPEC_UNUSED_CV_LABEL,
56634 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_CONST_LABEL,
56635 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_LABEL,
56636 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_LABEL,
56637 			(void*)&&ZEND_NULL_LABEL,
56638 			(void*)&&ZEND_UNSET_OBJ_SPEC_CV_CV_LABEL,
56639 			(void*)&&ZEND_FE_RESET_R_SPEC_CONST_LABEL,
56640 			(void*)&&ZEND_FE_RESET_R_SPEC_TMP_LABEL,
56641 			(void*)&&ZEND_FE_RESET_R_SPEC_VAR_LABEL,
56642 			(void*)&&ZEND_NULL_LABEL,
56643 			(void*)&&ZEND_FE_RESET_R_SPEC_CV_LABEL,
56644 			(void*)&&ZEND_NULL_LABEL,
56645 			(void*)&&ZEND_NULL_LABEL,
56646 			(void*)&&ZEND_FE_FETCH_R_SPEC_VAR_LABEL,
56647 			(void*)&&ZEND_NULL_LABEL,
56648 			(void*)&&ZEND_NULL_LABEL,
56649 			(void*)&&ZEND_EXIT_SPEC_CONST_LABEL,
56650 			(void*)&&ZEND_EXIT_SPEC_TMPVAR_LABEL,
56651 			(void*)&&ZEND_EXIT_SPEC_TMPVAR_LABEL,
56652 			(void*)&&ZEND_EXIT_SPEC_UNUSED_LABEL,
56653 			(void*)&&ZEND_EXIT_SPEC_CV_LABEL,
56654 			(void*)&&ZEND_NULL_LABEL,
56655 			(void*)&&ZEND_NULL_LABEL,
56656 			(void*)&&ZEND_NULL_LABEL,
56657 			(void*)&&ZEND_FETCH_R_SPEC_CONST_UNUSED_LABEL,
56658 			(void*)&&ZEND_NULL_LABEL,
56659 			(void*)&&ZEND_NULL_LABEL,
56660 			(void*)&&ZEND_NULL_LABEL,
56661 			(void*)&&ZEND_NULL_LABEL,
56662 			(void*)&&ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_LABEL,
56663 			(void*)&&ZEND_NULL_LABEL,
56664 			(void*)&&ZEND_NULL_LABEL,
56665 			(void*)&&ZEND_NULL_LABEL,
56666 			(void*)&&ZEND_NULL_LABEL,
56667 			(void*)&&ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_LABEL,
56668 			(void*)&&ZEND_NULL_LABEL,
56669 			(void*)&&ZEND_NULL_LABEL,
56670 			(void*)&&ZEND_NULL_LABEL,
56671 			(void*)&&ZEND_NULL_LABEL,
56672 			(void*)&&ZEND_NULL_LABEL,
56673 			(void*)&&ZEND_NULL_LABEL,
56674 			(void*)&&ZEND_NULL_LABEL,
56675 			(void*)&&ZEND_NULL_LABEL,
56676 			(void*)&&ZEND_NULL_LABEL,
56677 			(void*)&&ZEND_FETCH_R_SPEC_CV_UNUSED_LABEL,
56678 			(void*)&&ZEND_NULL_LABEL,
56679 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_CONST_LABEL,
56680 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_LABEL,
56681 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_LABEL,
56682 			(void*)&&ZEND_NULL_LABEL,
56683 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CONST_CV_LABEL,
56684 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_LABEL,
56685 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
56686 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
56687 			(void*)&&ZEND_NULL_LABEL,
56688 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_LABEL,
56689 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_LABEL,
56690 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
56691 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_LABEL,
56692 			(void*)&&ZEND_NULL_LABEL,
56693 			(void*)&&ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_LABEL,
56694 			(void*)&&ZEND_NULL_LABEL,
56695 			(void*)&&ZEND_NULL_LABEL,
56696 			(void*)&&ZEND_NULL_LABEL,
56697 			(void*)&&ZEND_NULL_LABEL,
56698 			(void*)&&ZEND_NULL_LABEL,
56699 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_CONST_LABEL,
56700 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_LABEL,
56701 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_LABEL,
56702 			(void*)&&ZEND_NULL_LABEL,
56703 			(void*)&&ZEND_FETCH_DIM_R_SPEC_CV_CV_LABEL,
56704 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_LABEL,
56705 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_LABEL,
56706 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_LABEL,
56707 			(void*)&&ZEND_NULL_LABEL,
56708 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CONST_CV_LABEL,
56709 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_LABEL,
56710 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_LABEL,
56711 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_LABEL,
56712 			(void*)&&ZEND_NULL_LABEL,
56713 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_TMP_CV_LABEL,
56714 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_LABEL,
56715 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_LABEL,
56716 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_LABEL,
56717 			(void*)&&ZEND_NULL_LABEL,
56718 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_VAR_CV_LABEL,
56719 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_LABEL,
56720 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_LABEL,
56721 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_LABEL,
56722 			(void*)&&ZEND_NULL_LABEL,
56723 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_LABEL,
56724 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_CONST_LABEL,
56725 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_LABEL,
56726 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_LABEL,
56727 			(void*)&&ZEND_NULL_LABEL,
56728 			(void*)&&ZEND_FETCH_OBJ_R_SPEC_CV_CV_LABEL,
56729 			(void*)&&ZEND_NULL_LABEL,
56730 			(void*)&&ZEND_NULL_LABEL,
56731 			(void*)&&ZEND_NULL_LABEL,
56732 			(void*)&&ZEND_FETCH_W_SPEC_CONST_UNUSED_LABEL,
56733 			(void*)&&ZEND_NULL_LABEL,
56734 			(void*)&&ZEND_NULL_LABEL,
56735 			(void*)&&ZEND_NULL_LABEL,
56736 			(void*)&&ZEND_NULL_LABEL,
56737 			(void*)&&ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_LABEL,
56738 			(void*)&&ZEND_NULL_LABEL,
56739 			(void*)&&ZEND_NULL_LABEL,
56740 			(void*)&&ZEND_NULL_LABEL,
56741 			(void*)&&ZEND_NULL_LABEL,
56742 			(void*)&&ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_LABEL,
56743 			(void*)&&ZEND_NULL_LABEL,
56744 			(void*)&&ZEND_NULL_LABEL,
56745 			(void*)&&ZEND_NULL_LABEL,
56746 			(void*)&&ZEND_NULL_LABEL,
56747 			(void*)&&ZEND_NULL_LABEL,
56748 			(void*)&&ZEND_NULL_LABEL,
56749 			(void*)&&ZEND_NULL_LABEL,
56750 			(void*)&&ZEND_NULL_LABEL,
56751 			(void*)&&ZEND_NULL_LABEL,
56752 			(void*)&&ZEND_FETCH_W_SPEC_CV_UNUSED_LABEL,
56753 			(void*)&&ZEND_NULL_LABEL,
56754 			(void*)&&ZEND_NULL_LABEL,
56755 			(void*)&&ZEND_NULL_LABEL,
56756 			(void*)&&ZEND_NULL_LABEL,
56757 			(void*)&&ZEND_NULL_LABEL,
56758 			(void*)&&ZEND_NULL_LABEL,
56759 			(void*)&&ZEND_NULL_LABEL,
56760 			(void*)&&ZEND_NULL_LABEL,
56761 			(void*)&&ZEND_NULL_LABEL,
56762 			(void*)&&ZEND_NULL_LABEL,
56763 			(void*)&&ZEND_NULL_LABEL,
56764 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_CONST_LABEL,
56765 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_LABEL,
56766 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_LABEL,
56767 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_LABEL,
56768 			(void*)&&ZEND_FETCH_DIM_W_SPEC_VAR_CV_LABEL,
56769 			(void*)&&ZEND_NULL_LABEL,
56770 			(void*)&&ZEND_NULL_LABEL,
56771 			(void*)&&ZEND_NULL_LABEL,
56772 			(void*)&&ZEND_NULL_LABEL,
56773 			(void*)&&ZEND_NULL_LABEL,
56774 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_CONST_LABEL,
56775 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_LABEL,
56776 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_LABEL,
56777 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_LABEL,
56778 			(void*)&&ZEND_FETCH_DIM_W_SPEC_CV_CV_LABEL,
56779 			(void*)&&ZEND_NULL_LABEL,
56780 			(void*)&&ZEND_NULL_LABEL,
56781 			(void*)&&ZEND_NULL_LABEL,
56782 			(void*)&&ZEND_NULL_LABEL,
56783 			(void*)&&ZEND_NULL_LABEL,
56784 			(void*)&&ZEND_NULL_LABEL,
56785 			(void*)&&ZEND_NULL_LABEL,
56786 			(void*)&&ZEND_NULL_LABEL,
56787 			(void*)&&ZEND_NULL_LABEL,
56788 			(void*)&&ZEND_NULL_LABEL,
56789 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_LABEL,
56790 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_LABEL,
56791 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_LABEL,
56792 			(void*)&&ZEND_NULL_LABEL,
56793 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_VAR_CV_LABEL,
56794 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_LABEL,
56795 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_LABEL,
56796 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_LABEL,
56797 			(void*)&&ZEND_NULL_LABEL,
56798 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_LABEL,
56799 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_CONST_LABEL,
56800 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_LABEL,
56801 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_LABEL,
56802 			(void*)&&ZEND_NULL_LABEL,
56803 			(void*)&&ZEND_FETCH_OBJ_W_SPEC_CV_CV_LABEL,
56804 			(void*)&&ZEND_NULL_LABEL,
56805 			(void*)&&ZEND_NULL_LABEL,
56806 			(void*)&&ZEND_NULL_LABEL,
56807 			(void*)&&ZEND_FETCH_RW_SPEC_CONST_UNUSED_LABEL,
56808 			(void*)&&ZEND_NULL_LABEL,
56809 			(void*)&&ZEND_NULL_LABEL,
56810 			(void*)&&ZEND_NULL_LABEL,
56811 			(void*)&&ZEND_NULL_LABEL,
56812 			(void*)&&ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_LABEL,
56813 			(void*)&&ZEND_NULL_LABEL,
56814 			(void*)&&ZEND_NULL_LABEL,
56815 			(void*)&&ZEND_NULL_LABEL,
56816 			(void*)&&ZEND_NULL_LABEL,
56817 			(void*)&&ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_LABEL,
56818 			(void*)&&ZEND_NULL_LABEL,
56819 			(void*)&&ZEND_NULL_LABEL,
56820 			(void*)&&ZEND_NULL_LABEL,
56821 			(void*)&&ZEND_NULL_LABEL,
56822 			(void*)&&ZEND_NULL_LABEL,
56823 			(void*)&&ZEND_NULL_LABEL,
56824 			(void*)&&ZEND_NULL_LABEL,
56825 			(void*)&&ZEND_NULL_LABEL,
56826 			(void*)&&ZEND_NULL_LABEL,
56827 			(void*)&&ZEND_FETCH_RW_SPEC_CV_UNUSED_LABEL,
56828 			(void*)&&ZEND_NULL_LABEL,
56829 			(void*)&&ZEND_NULL_LABEL,
56830 			(void*)&&ZEND_NULL_LABEL,
56831 			(void*)&&ZEND_NULL_LABEL,
56832 			(void*)&&ZEND_NULL_LABEL,
56833 			(void*)&&ZEND_NULL_LABEL,
56834 			(void*)&&ZEND_NULL_LABEL,
56835 			(void*)&&ZEND_NULL_LABEL,
56836 			(void*)&&ZEND_NULL_LABEL,
56837 			(void*)&&ZEND_NULL_LABEL,
56838 			(void*)&&ZEND_NULL_LABEL,
56839 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_LABEL,
56840 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_LABEL,
56841 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_LABEL,
56842 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_LABEL,
56843 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_VAR_CV_LABEL,
56844 			(void*)&&ZEND_NULL_LABEL,
56845 			(void*)&&ZEND_NULL_LABEL,
56846 			(void*)&&ZEND_NULL_LABEL,
56847 			(void*)&&ZEND_NULL_LABEL,
56848 			(void*)&&ZEND_NULL_LABEL,
56849 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_CONST_LABEL,
56850 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_LABEL,
56851 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_LABEL,
56852 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_LABEL,
56853 			(void*)&&ZEND_FETCH_DIM_RW_SPEC_CV_CV_LABEL,
56854 			(void*)&&ZEND_NULL_LABEL,
56855 			(void*)&&ZEND_NULL_LABEL,
56856 			(void*)&&ZEND_NULL_LABEL,
56857 			(void*)&&ZEND_NULL_LABEL,
56858 			(void*)&&ZEND_NULL_LABEL,
56859 			(void*)&&ZEND_NULL_LABEL,
56860 			(void*)&&ZEND_NULL_LABEL,
56861 			(void*)&&ZEND_NULL_LABEL,
56862 			(void*)&&ZEND_NULL_LABEL,
56863 			(void*)&&ZEND_NULL_LABEL,
56864 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_LABEL,
56865 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_LABEL,
56866 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_LABEL,
56867 			(void*)&&ZEND_NULL_LABEL,
56868 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_LABEL,
56869 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_LABEL,
56870 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_LABEL,
56871 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_LABEL,
56872 			(void*)&&ZEND_NULL_LABEL,
56873 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_LABEL,
56874 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_LABEL,
56875 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_LABEL,
56876 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_LABEL,
56877 			(void*)&&ZEND_NULL_LABEL,
56878 			(void*)&&ZEND_FETCH_OBJ_RW_SPEC_CV_CV_LABEL,
56879 			(void*)&&ZEND_NULL_LABEL,
56880 			(void*)&&ZEND_NULL_LABEL,
56881 			(void*)&&ZEND_NULL_LABEL,
56882 			(void*)&&ZEND_FETCH_IS_SPEC_CONST_UNUSED_LABEL,
56883 			(void*)&&ZEND_NULL_LABEL,
56884 			(void*)&&ZEND_NULL_LABEL,
56885 			(void*)&&ZEND_NULL_LABEL,
56886 			(void*)&&ZEND_NULL_LABEL,
56887 			(void*)&&ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_LABEL,
56888 			(void*)&&ZEND_NULL_LABEL,
56889 			(void*)&&ZEND_NULL_LABEL,
56890 			(void*)&&ZEND_NULL_LABEL,
56891 			(void*)&&ZEND_NULL_LABEL,
56892 			(void*)&&ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_LABEL,
56893 			(void*)&&ZEND_NULL_LABEL,
56894 			(void*)&&ZEND_NULL_LABEL,
56895 			(void*)&&ZEND_NULL_LABEL,
56896 			(void*)&&ZEND_NULL_LABEL,
56897 			(void*)&&ZEND_NULL_LABEL,
56898 			(void*)&&ZEND_NULL_LABEL,
56899 			(void*)&&ZEND_NULL_LABEL,
56900 			(void*)&&ZEND_NULL_LABEL,
56901 			(void*)&&ZEND_NULL_LABEL,
56902 			(void*)&&ZEND_FETCH_IS_SPEC_CV_UNUSED_LABEL,
56903 			(void*)&&ZEND_NULL_LABEL,
56904 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_LABEL,
56905 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_LABEL,
56906 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_LABEL,
56907 			(void*)&&ZEND_NULL_LABEL,
56908 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CONST_CV_LABEL,
56909 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_LABEL,
56910 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56911 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56912 			(void*)&&ZEND_NULL_LABEL,
56913 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_LABEL,
56914 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_LABEL,
56915 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56916 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56917 			(void*)&&ZEND_NULL_LABEL,
56918 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_LABEL,
56919 			(void*)&&ZEND_NULL_LABEL,
56920 			(void*)&&ZEND_NULL_LABEL,
56921 			(void*)&&ZEND_NULL_LABEL,
56922 			(void*)&&ZEND_NULL_LABEL,
56923 			(void*)&&ZEND_NULL_LABEL,
56924 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_CONST_LABEL,
56925 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_LABEL,
56926 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_LABEL,
56927 			(void*)&&ZEND_NULL_LABEL,
56928 			(void*)&&ZEND_FETCH_DIM_IS_SPEC_CV_CV_LABEL,
56929 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_LABEL,
56930 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_LABEL,
56931 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_LABEL,
56932 			(void*)&&ZEND_NULL_LABEL,
56933 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_LABEL,
56934 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_LABEL,
56935 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56936 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56937 			(void*)&&ZEND_NULL_LABEL,
56938 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_LABEL,
56939 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_LABEL,
56940 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56941 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_LABEL,
56942 			(void*)&&ZEND_NULL_LABEL,
56943 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_LABEL,
56944 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_LABEL,
56945 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_LABEL,
56946 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_LABEL,
56947 			(void*)&&ZEND_NULL_LABEL,
56948 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_LABEL,
56949 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_LABEL,
56950 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_LABEL,
56951 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_LABEL,
56952 			(void*)&&ZEND_NULL_LABEL,
56953 			(void*)&&ZEND_FETCH_OBJ_IS_SPEC_CV_CV_LABEL,
56954 			(void*)&&ZEND_NULL_LABEL,
56955 			(void*)&&ZEND_NULL_LABEL,
56956 			(void*)&&ZEND_NULL_LABEL,
56957 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
56958 			(void*)&&ZEND_NULL_LABEL,
56959 			(void*)&&ZEND_NULL_LABEL,
56960 			(void*)&&ZEND_NULL_LABEL,
56961 			(void*)&&ZEND_NULL_LABEL,
56962 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
56963 			(void*)&&ZEND_NULL_LABEL,
56964 			(void*)&&ZEND_NULL_LABEL,
56965 			(void*)&&ZEND_NULL_LABEL,
56966 			(void*)&&ZEND_NULL_LABEL,
56967 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
56968 			(void*)&&ZEND_NULL_LABEL,
56969 			(void*)&&ZEND_NULL_LABEL,
56970 			(void*)&&ZEND_NULL_LABEL,
56971 			(void*)&&ZEND_NULL_LABEL,
56972 			(void*)&&ZEND_NULL_LABEL,
56973 			(void*)&&ZEND_NULL_LABEL,
56974 			(void*)&&ZEND_NULL_LABEL,
56975 			(void*)&&ZEND_NULL_LABEL,
56976 			(void*)&&ZEND_NULL_LABEL,
56977 			(void*)&&ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
56978 			(void*)&&ZEND_NULL_LABEL,
56979 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_LABEL,
56980 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
56981 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
56982 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
56983 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_LABEL,
56984 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_LABEL,
56985 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
56986 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
56987 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_LABEL,
56988 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_LABEL,
56989 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_LABEL,
56990 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
56991 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
56992 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_LABEL,
56993 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_LABEL,
56994 			(void*)&&ZEND_NULL_LABEL,
56995 			(void*)&&ZEND_NULL_LABEL,
56996 			(void*)&&ZEND_NULL_LABEL,
56997 			(void*)&&ZEND_NULL_LABEL,
56998 			(void*)&&ZEND_NULL_LABEL,
56999 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_LABEL,
57000 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
57001 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
57002 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
57003 			(void*)&&ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_LABEL,
57004 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_LABEL,
57005 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
57006 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_LABEL,
57007 			(void*)&&ZEND_NULL_LABEL,
57008 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_LABEL,
57009 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_LABEL,
57010 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
57011 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_LABEL,
57012 			(void*)&&ZEND_NULL_LABEL,
57013 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_LABEL,
57014 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_LABEL,
57015 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
57016 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_LABEL,
57017 			(void*)&&ZEND_NULL_LABEL,
57018 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_LABEL,
57019 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_LABEL,
57020 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_LABEL,
57021 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_LABEL,
57022 			(void*)&&ZEND_NULL_LABEL,
57023 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_LABEL,
57024 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_LABEL,
57025 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
57026 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_LABEL,
57027 			(void*)&&ZEND_NULL_LABEL,
57028 			(void*)&&ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_LABEL,
57029 			(void*)&&ZEND_NULL_LABEL,
57030 			(void*)&&ZEND_NULL_LABEL,
57031 			(void*)&&ZEND_NULL_LABEL,
57032 			(void*)&&ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_LABEL,
57033 			(void*)&&ZEND_NULL_LABEL,
57034 			(void*)&&ZEND_NULL_LABEL,
57035 			(void*)&&ZEND_NULL_LABEL,
57036 			(void*)&&ZEND_NULL_LABEL,
57037 			(void*)&&ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
57038 			(void*)&&ZEND_NULL_LABEL,
57039 			(void*)&&ZEND_NULL_LABEL,
57040 			(void*)&&ZEND_NULL_LABEL,
57041 			(void*)&&ZEND_NULL_LABEL,
57042 			(void*)&&ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
57043 			(void*)&&ZEND_NULL_LABEL,
57044 			(void*)&&ZEND_NULL_LABEL,
57045 			(void*)&&ZEND_NULL_LABEL,
57046 			(void*)&&ZEND_NULL_LABEL,
57047 			(void*)&&ZEND_NULL_LABEL,
57048 			(void*)&&ZEND_NULL_LABEL,
57049 			(void*)&&ZEND_NULL_LABEL,
57050 			(void*)&&ZEND_NULL_LABEL,
57051 			(void*)&&ZEND_NULL_LABEL,
57052 			(void*)&&ZEND_FETCH_UNSET_SPEC_CV_UNUSED_LABEL,
57053 			(void*)&&ZEND_NULL_LABEL,
57054 			(void*)&&ZEND_NULL_LABEL,
57055 			(void*)&&ZEND_NULL_LABEL,
57056 			(void*)&&ZEND_NULL_LABEL,
57057 			(void*)&&ZEND_NULL_LABEL,
57058 			(void*)&&ZEND_NULL_LABEL,
57059 			(void*)&&ZEND_NULL_LABEL,
57060 			(void*)&&ZEND_NULL_LABEL,
57061 			(void*)&&ZEND_NULL_LABEL,
57062 			(void*)&&ZEND_NULL_LABEL,
57063 			(void*)&&ZEND_NULL_LABEL,
57064 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_LABEL,
57065 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_LABEL,
57066 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_LABEL,
57067 			(void*)&&ZEND_NULL_LABEL,
57068 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_LABEL,
57069 			(void*)&&ZEND_NULL_LABEL,
57070 			(void*)&&ZEND_NULL_LABEL,
57071 			(void*)&&ZEND_NULL_LABEL,
57072 			(void*)&&ZEND_NULL_LABEL,
57073 			(void*)&&ZEND_NULL_LABEL,
57074 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_LABEL,
57075 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_LABEL,
57076 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_LABEL,
57077 			(void*)&&ZEND_NULL_LABEL,
57078 			(void*)&&ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_LABEL,
57079 			(void*)&&ZEND_NULL_LABEL,
57080 			(void*)&&ZEND_NULL_LABEL,
57081 			(void*)&&ZEND_NULL_LABEL,
57082 			(void*)&&ZEND_NULL_LABEL,
57083 			(void*)&&ZEND_NULL_LABEL,
57084 			(void*)&&ZEND_NULL_LABEL,
57085 			(void*)&&ZEND_NULL_LABEL,
57086 			(void*)&&ZEND_NULL_LABEL,
57087 			(void*)&&ZEND_NULL_LABEL,
57088 			(void*)&&ZEND_NULL_LABEL,
57089 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_LABEL,
57090 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_LABEL,
57091 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_LABEL,
57092 			(void*)&&ZEND_NULL_LABEL,
57093 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_LABEL,
57094 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_LABEL,
57095 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_LABEL,
57096 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_LABEL,
57097 			(void*)&&ZEND_NULL_LABEL,
57098 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_LABEL,
57099 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_LABEL,
57100 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_LABEL,
57101 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_LABEL,
57102 			(void*)&&ZEND_NULL_LABEL,
57103 			(void*)&&ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_LABEL,
57104 			(void*)&&ZEND_FETCH_LIST_SPEC_CONST_CONST_LABEL,
57105 			(void*)&&ZEND_FETCH_LIST_SPEC_CONST_TMPVAR_LABEL,
57106 			(void*)&&ZEND_FETCH_LIST_SPEC_CONST_TMPVAR_LABEL,
57107 			(void*)&&ZEND_NULL_LABEL,
57108 			(void*)&&ZEND_FETCH_LIST_SPEC_CONST_CV_LABEL,
57109 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_CONST_LABEL,
57110 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_LABEL,
57111 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_LABEL,
57112 			(void*)&&ZEND_NULL_LABEL,
57113 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_CV_LABEL,
57114 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_CONST_LABEL,
57115 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_LABEL,
57116 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_LABEL,
57117 			(void*)&&ZEND_NULL_LABEL,
57118 			(void*)&&ZEND_FETCH_LIST_SPEC_TMPVAR_CV_LABEL,
57119 			(void*)&&ZEND_NULL_LABEL,
57120 			(void*)&&ZEND_NULL_LABEL,
57121 			(void*)&&ZEND_NULL_LABEL,
57122 			(void*)&&ZEND_NULL_LABEL,
57123 			(void*)&&ZEND_NULL_LABEL,
57124 			(void*)&&ZEND_FETCH_LIST_SPEC_CV_CONST_LABEL,
57125 			(void*)&&ZEND_FETCH_LIST_SPEC_CV_TMPVAR_LABEL,
57126 			(void*)&&ZEND_FETCH_LIST_SPEC_CV_TMPVAR_LABEL,
57127 			(void*)&&ZEND_NULL_LABEL,
57128 			(void*)&&ZEND_FETCH_LIST_SPEC_CV_CV_LABEL,
57129 			(void*)&&ZEND_NULL_LABEL,
57130 			(void*)&&ZEND_NULL_LABEL,
57131 			(void*)&&ZEND_NULL_LABEL,
57132 			(void*)&&ZEND_NULL_LABEL,
57133 			(void*)&&ZEND_NULL_LABEL,
57134 			(void*)&&ZEND_NULL_LABEL,
57135 			(void*)&&ZEND_NULL_LABEL,
57136 			(void*)&&ZEND_NULL_LABEL,
57137 			(void*)&&ZEND_NULL_LABEL,
57138 			(void*)&&ZEND_NULL_LABEL,
57139 			(void*)&&ZEND_NULL_LABEL,
57140 			(void*)&&ZEND_NULL_LABEL,
57141 			(void*)&&ZEND_NULL_LABEL,
57142 			(void*)&&ZEND_NULL_LABEL,
57143 			(void*)&&ZEND_NULL_LABEL,
57144 			(void*)&&ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_LABEL,
57145 			(void*)&&ZEND_NULL_LABEL,
57146 			(void*)&&ZEND_NULL_LABEL,
57147 			(void*)&&ZEND_NULL_LABEL,
57148 			(void*)&&ZEND_NULL_LABEL,
57149 			(void*)&&ZEND_NULL_LABEL,
57150 			(void*)&&ZEND_NULL_LABEL,
57151 			(void*)&&ZEND_NULL_LABEL,
57152 			(void*)&&ZEND_NULL_LABEL,
57153 			(void*)&&ZEND_NULL_LABEL,
57154 			(void*)&&ZEND_EXT_STMT_SPEC_LABEL,
57155 			(void*)&&ZEND_EXT_FCALL_BEGIN_SPEC_LABEL,
57156 			(void*)&&ZEND_EXT_FCALL_END_SPEC_LABEL,
57157 			(void*)&&ZEND_EXT_NOP_SPEC_LABEL,
57158 			(void*)&&ZEND_TICKS_SPEC_LABEL,
57159 			(void*)&&ZEND_NULL_LABEL,
57160 			(void*)&&ZEND_NULL_LABEL,
57161 			(void*)&&ZEND_SEND_VAR_NO_REF_SPEC_VAR_LABEL,
57162 			(void*)&&ZEND_NULL_LABEL,
57163 			(void*)&&ZEND_NULL_LABEL,
57164 			(void*)&&ZEND_NULL_LABEL,
57165 			(void*)&&ZEND_NULL_LABEL,
57166 			(void*)&&ZEND_NULL_LABEL,
57167 			(void*)&&ZEND_NULL_LABEL,
57168 			(void*)&&ZEND_CATCH_SPEC_CONST_CV_LABEL,
57169 			(void*)&&ZEND_NULL_LABEL,
57170 			(void*)&&ZEND_NULL_LABEL,
57171 			(void*)&&ZEND_NULL_LABEL,
57172 			(void*)&&ZEND_NULL_LABEL,
57173 			(void*)&&ZEND_NULL_LABEL,
57174 			(void*)&&ZEND_NULL_LABEL,
57175 			(void*)&&ZEND_NULL_LABEL,
57176 			(void*)&&ZEND_NULL_LABEL,
57177 			(void*)&&ZEND_NULL_LABEL,
57178 			(void*)&&ZEND_NULL_LABEL,
57179 			(void*)&&ZEND_NULL_LABEL,
57180 			(void*)&&ZEND_NULL_LABEL,
57181 			(void*)&&ZEND_NULL_LABEL,
57182 			(void*)&&ZEND_NULL_LABEL,
57183 			(void*)&&ZEND_NULL_LABEL,
57184 			(void*)&&ZEND_NULL_LABEL,
57185 			(void*)&&ZEND_NULL_LABEL,
57186 			(void*)&&ZEND_NULL_LABEL,
57187 			(void*)&&ZEND_NULL_LABEL,
57188 			(void*)&&ZEND_NULL_LABEL,
57189 			(void*)&&ZEND_THROW_SPEC_CONST_LABEL,
57190 			(void*)&&ZEND_THROW_SPEC_TMP_LABEL,
57191 			(void*)&&ZEND_THROW_SPEC_VAR_LABEL,
57192 			(void*)&&ZEND_NULL_LABEL,
57193 			(void*)&&ZEND_THROW_SPEC_CV_LABEL,
57194 			(void*)&&ZEND_FETCH_CLASS_SPEC_CONST_LABEL,
57195 			(void*)&&ZEND_FETCH_CLASS_SPEC_TMPVAR_LABEL,
57196 			(void*)&&ZEND_FETCH_CLASS_SPEC_TMPVAR_LABEL,
57197 			(void*)&&ZEND_FETCH_CLASS_SPEC_UNUSED_LABEL,
57198 			(void*)&&ZEND_FETCH_CLASS_SPEC_CV_LABEL,
57199 			(void*)&&ZEND_CLONE_SPEC_CONST_LABEL,
57200 			(void*)&&ZEND_CLONE_SPEC_TMPVAR_LABEL,
57201 			(void*)&&ZEND_CLONE_SPEC_TMPVAR_LABEL,
57202 			(void*)&&ZEND_CLONE_SPEC_UNUSED_LABEL,
57203 			(void*)&&ZEND_CLONE_SPEC_CV_LABEL,
57204 			(void*)&&ZEND_RETURN_BY_REF_SPEC_CONST_LABEL,
57205 			(void*)&&ZEND_RETURN_BY_REF_SPEC_TMP_LABEL,
57206 			(void*)&&ZEND_RETURN_BY_REF_SPEC_VAR_LABEL,
57207 			(void*)&&ZEND_NULL_LABEL,
57208 			(void*)&&ZEND_RETURN_BY_REF_SPEC_CV_LABEL,
57209 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_LABEL,
57210 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
57211 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
57212 			(void*)&&ZEND_NULL_LABEL,
57213 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_LABEL,
57214 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_LABEL,
57215 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
57216 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
57217 			(void*)&&ZEND_NULL_LABEL,
57218 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_LABEL,
57219 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_LABEL,
57220 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
57221 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_LABEL,
57222 			(void*)&&ZEND_NULL_LABEL,
57223 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_LABEL,
57224 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_LABEL,
57225 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
57226 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
57227 			(void*)&&ZEND_NULL_LABEL,
57228 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_LABEL,
57229 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_LABEL,
57230 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_LABEL,
57231 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_LABEL,
57232 			(void*)&&ZEND_NULL_LABEL,
57233 			(void*)&&ZEND_INIT_METHOD_CALL_SPEC_CV_CV_LABEL,
57234 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_LABEL,
57235 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
57236 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_LABEL,
57237 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_LABEL,
57238 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_LABEL,
57239 			(void*)&&ZEND_NULL_LABEL,
57240 			(void*)&&ZEND_NULL_LABEL,
57241 			(void*)&&ZEND_NULL_LABEL,
57242 			(void*)&&ZEND_NULL_LABEL,
57243 			(void*)&&ZEND_NULL_LABEL,
57244 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_LABEL,
57245 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_LABEL,
57246 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_LABEL,
57247 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_LABEL,
57248 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_LABEL,
57249 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_LABEL,
57250 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
57251 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_LABEL,
57252 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_LABEL,
57253 			(void*)&&ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_LABEL,
57254 			(void*)&&ZEND_NULL_LABEL,
57255 			(void*)&&ZEND_NULL_LABEL,
57256 			(void*)&&ZEND_NULL_LABEL,
57257 			(void*)&&ZEND_NULL_LABEL,
57258 			(void*)&&ZEND_NULL_LABEL,
57259 			(void*)&&ZEND_NULL_LABEL,
57260 			(void*)&&ZEND_NULL_LABEL,
57261 			(void*)&&ZEND_NULL_LABEL,
57262 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_LABEL,
57263 			(void*)&&ZEND_NULL_LABEL,
57264 			(void*)&&ZEND_NULL_LABEL,
57265 			(void*)&&ZEND_NULL_LABEL,
57266 			(void*)&&ZEND_NULL_LABEL,
57267 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_LABEL,
57268 			(void*)&&ZEND_NULL_LABEL,
57269 			(void*)&&ZEND_NULL_LABEL,
57270 			(void*)&&ZEND_NULL_LABEL,
57271 			(void*)&&ZEND_NULL_LABEL,
57272 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_LABEL,
57273 			(void*)&&ZEND_NULL_LABEL,
57274 			(void*)&&ZEND_NULL_LABEL,
57275 			(void*)&&ZEND_NULL_LABEL,
57276 			(void*)&&ZEND_NULL_LABEL,
57277 			(void*)&&ZEND_NULL_LABEL,
57278 			(void*)&&ZEND_NULL_LABEL,
57279 			(void*)&&ZEND_NULL_LABEL,
57280 			(void*)&&ZEND_NULL_LABEL,
57281 			(void*)&&ZEND_NULL_LABEL,
57282 			(void*)&&ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_LABEL,
57283 			(void*)&&ZEND_NULL_LABEL,
57284 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_LABEL,
57285 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_LABEL,
57286 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_LABEL,
57287 			(void*)&&ZEND_NULL_LABEL,
57288 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_LABEL,
57289 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_LABEL,
57290 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57291 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57292 			(void*)&&ZEND_NULL_LABEL,
57293 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_LABEL,
57294 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_LABEL,
57295 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57296 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57297 			(void*)&&ZEND_NULL_LABEL,
57298 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_LABEL,
57299 			(void*)&&ZEND_NULL_LABEL,
57300 			(void*)&&ZEND_NULL_LABEL,
57301 			(void*)&&ZEND_NULL_LABEL,
57302 			(void*)&&ZEND_NULL_LABEL,
57303 			(void*)&&ZEND_NULL_LABEL,
57304 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_LABEL,
57305 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_LABEL,
57306 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_LABEL,
57307 			(void*)&&ZEND_NULL_LABEL,
57308 			(void*)&&ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_LABEL,
57309 			(void*)&&ZEND_SEND_VAL_EX_SPEC_CONST_LABEL,
57310 			(void*)&&ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_LABEL,
57311 			(void*)&&ZEND_SEND_VAL_EX_SPEC_TMP_LABEL,
57312 			(void*)&&ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_LABEL,
57313 			(void*)&&ZEND_NULL_LABEL,
57314 			(void*)&&ZEND_NULL_LABEL,
57315 			(void*)&&ZEND_NULL_LABEL,
57316 			(void*)&&ZEND_NULL_LABEL,
57317 			(void*)&&ZEND_NULL_LABEL,
57318 			(void*)&&ZEND_NULL_LABEL,
57319 			(void*)&&ZEND_NULL_LABEL,
57320 			(void*)&&ZEND_NULL_LABEL,
57321 			(void*)&&ZEND_SEND_VAR_SPEC_VAR_LABEL,
57322 			(void*)&&ZEND_NULL_LABEL,
57323 			(void*)&&ZEND_SEND_VAR_SPEC_CV_LABEL,
57324 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_CONST_LABEL,
57325 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_LABEL,
57326 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_LABEL,
57327 			(void*)&&ZEND_NULL_LABEL,
57328 			(void*)&&ZEND_INIT_USER_CALL_SPEC_CONST_CV_LABEL,
57329 			(void*)&&ZEND_NULL_LABEL,
57330 			(void*)&&ZEND_NULL_LABEL,
57331 			(void*)&&ZEND_NULL_LABEL,
57332 			(void*)&&ZEND_NULL_LABEL,
57333 			(void*)&&ZEND_NULL_LABEL,
57334 			(void*)&&ZEND_NULL_LABEL,
57335 			(void*)&&ZEND_NULL_LABEL,
57336 			(void*)&&ZEND_NULL_LABEL,
57337 			(void*)&&ZEND_NULL_LABEL,
57338 			(void*)&&ZEND_NULL_LABEL,
57339 			(void*)&&ZEND_NULL_LABEL,
57340 			(void*)&&ZEND_NULL_LABEL,
57341 			(void*)&&ZEND_NULL_LABEL,
57342 			(void*)&&ZEND_NULL_LABEL,
57343 			(void*)&&ZEND_NULL_LABEL,
57344 			(void*)&&ZEND_NULL_LABEL,
57345 			(void*)&&ZEND_NULL_LABEL,
57346 			(void*)&&ZEND_NULL_LABEL,
57347 			(void*)&&ZEND_NULL_LABEL,
57348 			(void*)&&ZEND_NULL_LABEL,
57349 			(void*)&&ZEND_SEND_ARRAY_SPEC_LABEL,
57350 			(void*)&&ZEND_SEND_USER_SPEC_CONST_LABEL,
57351 			(void*)&&ZEND_SEND_USER_SPEC_TMP_LABEL,
57352 			(void*)&&ZEND_SEND_USER_SPEC_VAR_LABEL,
57353 			(void*)&&ZEND_NULL_LABEL,
57354 			(void*)&&ZEND_SEND_USER_SPEC_CV_LABEL,
57355 			(void*)&&ZEND_STRLEN_SPEC_CONST_LABEL,
57356 			(void*)&&ZEND_STRLEN_SPEC_TMPVAR_LABEL,
57357 			(void*)&&ZEND_STRLEN_SPEC_TMPVAR_LABEL,
57358 			(void*)&&ZEND_NULL_LABEL,
57359 			(void*)&&ZEND_STRLEN_SPEC_CV_LABEL,
57360 			(void*)&&ZEND_DEFINED_SPEC_CONST_LABEL,
57361 			(void*)&&ZEND_NULL_LABEL,
57362 			(void*)&&ZEND_NULL_LABEL,
57363 			(void*)&&ZEND_NULL_LABEL,
57364 			(void*)&&ZEND_NULL_LABEL,
57365 			(void*)&&ZEND_TYPE_CHECK_SPEC_CONST_LABEL,
57366 			(void*)&&ZEND_TYPE_CHECK_SPEC_TMP_LABEL,
57367 			(void*)&&ZEND_TYPE_CHECK_SPEC_VAR_LABEL,
57368 			(void*)&&ZEND_NULL_LABEL,
57369 			(void*)&&ZEND_TYPE_CHECK_SPEC_CV_LABEL,
57370 			(void*)&&ZEND_NULL_LABEL,
57371 			(void*)&&ZEND_NULL_LABEL,
57372 			(void*)&&ZEND_NULL_LABEL,
57373 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_LABEL,
57374 			(void*)&&ZEND_NULL_LABEL,
57375 			(void*)&&ZEND_NULL_LABEL,
57376 			(void*)&&ZEND_NULL_LABEL,
57377 			(void*)&&ZEND_NULL_LABEL,
57378 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_LABEL,
57379 			(void*)&&ZEND_NULL_LABEL,
57380 			(void*)&&ZEND_NULL_LABEL,
57381 			(void*)&&ZEND_NULL_LABEL,
57382 			(void*)&&ZEND_NULL_LABEL,
57383 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_LABEL,
57384 			(void*)&&ZEND_NULL_LABEL,
57385 			(void*)&&ZEND_NULL_LABEL,
57386 			(void*)&&ZEND_NULL_LABEL,
57387 			(void*)&&ZEND_NULL_LABEL,
57388 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_LABEL,
57389 			(void*)&&ZEND_NULL_LABEL,
57390 			(void*)&&ZEND_NULL_LABEL,
57391 			(void*)&&ZEND_NULL_LABEL,
57392 			(void*)&&ZEND_NULL_LABEL,
57393 			(void*)&&ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_LABEL,
57394 			(void*)&&ZEND_NULL_LABEL,
57395 			(void*)&&ZEND_FE_RESET_RW_SPEC_CONST_LABEL,
57396 			(void*)&&ZEND_FE_RESET_RW_SPEC_TMP_LABEL,
57397 			(void*)&&ZEND_FE_RESET_RW_SPEC_VAR_LABEL,
57398 			(void*)&&ZEND_NULL_LABEL,
57399 			(void*)&&ZEND_FE_RESET_RW_SPEC_CV_LABEL,
57400 			(void*)&&ZEND_NULL_LABEL,
57401 			(void*)&&ZEND_NULL_LABEL,
57402 			(void*)&&ZEND_FE_FETCH_RW_SPEC_VAR_LABEL,
57403 			(void*)&&ZEND_NULL_LABEL,
57404 			(void*)&&ZEND_NULL_LABEL,
57405 			(void*)&&ZEND_NULL_LABEL,
57406 			(void*)&&ZEND_FE_FREE_SPEC_TMPVAR_LABEL,
57407 			(void*)&&ZEND_FE_FREE_SPEC_TMPVAR_LABEL,
57408 			(void*)&&ZEND_NULL_LABEL,
57409 			(void*)&&ZEND_NULL_LABEL,
57410 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_LABEL,
57411 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_LABEL,
57412 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_LABEL,
57413 			(void*)&&ZEND_NULL_LABEL,
57414 			(void*)&&ZEND_INIT_DYNAMIC_CALL_SPEC_CV_LABEL,
57415 			(void*)&&ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_LABEL,
57416 			(void*)&&ZEND_DO_ICALL_SPEC_RETVAL_USED_LABEL,
57417 			(void*)&&ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_LABEL,
57418 			(void*)&&ZEND_DO_UCALL_SPEC_RETVAL_USED_LABEL,
57419 			(void*)&&ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_LABEL,
57420 			(void*)&&ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_LABEL,
57421 			(void*)&&ZEND_NULL_LABEL,
57422 			(void*)&&ZEND_NULL_LABEL,
57423 			(void*)&&ZEND_NULL_LABEL,
57424 			(void*)&&ZEND_NULL_LABEL,
57425 			(void*)&&ZEND_NULL_LABEL,
57426 			(void*)&&ZEND_NULL_LABEL,
57427 			(void*)&&ZEND_NULL_LABEL,
57428 			(void*)&&ZEND_NULL_LABEL,
57429 			(void*)&&ZEND_NULL_LABEL,
57430 			(void*)&&ZEND_NULL_LABEL,
57431 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_LABEL,
57432 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57433 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57434 			(void*)&&ZEND_NULL_LABEL,
57435 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_VAR_CV_LABEL,
57436 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_LABEL,
57437 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57438 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57439 			(void*)&&ZEND_NULL_LABEL,
57440 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_LABEL,
57441 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_CONST_LABEL,
57442 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
57443 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
57444 			(void*)&&ZEND_NULL_LABEL,
57445 			(void*)&&ZEND_PRE_INC_OBJ_SPEC_CV_CV_LABEL,
57446 			(void*)&&ZEND_NULL_LABEL,
57447 			(void*)&&ZEND_NULL_LABEL,
57448 			(void*)&&ZEND_NULL_LABEL,
57449 			(void*)&&ZEND_NULL_LABEL,
57450 			(void*)&&ZEND_NULL_LABEL,
57451 			(void*)&&ZEND_NULL_LABEL,
57452 			(void*)&&ZEND_NULL_LABEL,
57453 			(void*)&&ZEND_NULL_LABEL,
57454 			(void*)&&ZEND_NULL_LABEL,
57455 			(void*)&&ZEND_NULL_LABEL,
57456 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_LABEL,
57457 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57458 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57459 			(void*)&&ZEND_NULL_LABEL,
57460 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_LABEL,
57461 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_LABEL,
57462 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57463 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57464 			(void*)&&ZEND_NULL_LABEL,
57465 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_LABEL,
57466 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_LABEL,
57467 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
57468 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
57469 			(void*)&&ZEND_NULL_LABEL,
57470 			(void*)&&ZEND_PRE_DEC_OBJ_SPEC_CV_CV_LABEL,
57471 			(void*)&&ZEND_NULL_LABEL,
57472 			(void*)&&ZEND_NULL_LABEL,
57473 			(void*)&&ZEND_NULL_LABEL,
57474 			(void*)&&ZEND_NULL_LABEL,
57475 			(void*)&&ZEND_NULL_LABEL,
57476 			(void*)&&ZEND_NULL_LABEL,
57477 			(void*)&&ZEND_NULL_LABEL,
57478 			(void*)&&ZEND_NULL_LABEL,
57479 			(void*)&&ZEND_NULL_LABEL,
57480 			(void*)&&ZEND_NULL_LABEL,
57481 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_CONST_LABEL,
57482 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57483 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57484 			(void*)&&ZEND_NULL_LABEL,
57485 			(void*)&&ZEND_POST_INC_OBJ_SPEC_VAR_CV_LABEL,
57486 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_LABEL,
57487 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57488 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57489 			(void*)&&ZEND_NULL_LABEL,
57490 			(void*)&&ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_LABEL,
57491 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_CONST_LABEL,
57492 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
57493 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_LABEL,
57494 			(void*)&&ZEND_NULL_LABEL,
57495 			(void*)&&ZEND_POST_INC_OBJ_SPEC_CV_CV_LABEL,
57496 			(void*)&&ZEND_NULL_LABEL,
57497 			(void*)&&ZEND_NULL_LABEL,
57498 			(void*)&&ZEND_NULL_LABEL,
57499 			(void*)&&ZEND_NULL_LABEL,
57500 			(void*)&&ZEND_NULL_LABEL,
57501 			(void*)&&ZEND_NULL_LABEL,
57502 			(void*)&&ZEND_NULL_LABEL,
57503 			(void*)&&ZEND_NULL_LABEL,
57504 			(void*)&&ZEND_NULL_LABEL,
57505 			(void*)&&ZEND_NULL_LABEL,
57506 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_LABEL,
57507 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57508 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_LABEL,
57509 			(void*)&&ZEND_NULL_LABEL,
57510 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_VAR_CV_LABEL,
57511 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_LABEL,
57512 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57513 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57514 			(void*)&&ZEND_NULL_LABEL,
57515 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_LABEL,
57516 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_CONST_LABEL,
57517 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
57518 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_LABEL,
57519 			(void*)&&ZEND_NULL_LABEL,
57520 			(void*)&&ZEND_POST_DEC_OBJ_SPEC_CV_CV_LABEL,
57521 			(void*)&&ZEND_NULL_LABEL,
57522 			(void*)&&ZEND_NULL_LABEL,
57523 			(void*)&&ZEND_NULL_LABEL,
57524 			(void*)&&ZEND_NULL_LABEL,
57525 			(void*)&&ZEND_NULL_LABEL,
57526 			(void*)&&ZEND_NULL_LABEL,
57527 			(void*)&&ZEND_NULL_LABEL,
57528 			(void*)&&ZEND_NULL_LABEL,
57529 			(void*)&&ZEND_NULL_LABEL,
57530 			(void*)&&ZEND_NULL_LABEL,
57531 			(void*)&&ZEND_NULL_LABEL,
57532 			(void*)&&ZEND_NULL_LABEL,
57533 			(void*)&&ZEND_NULL_LABEL,
57534 			(void*)&&ZEND_NULL_LABEL,
57535 			(void*)&&ZEND_NULL_LABEL,
57536 			(void*)&&ZEND_NULL_LABEL,
57537 			(void*)&&ZEND_NULL_LABEL,
57538 			(void*)&&ZEND_NULL_LABEL,
57539 			(void*)&&ZEND_NULL_LABEL,
57540 			(void*)&&ZEND_NULL_LABEL,
57541 			(void*)&&ZEND_NULL_LABEL,
57542 			(void*)&&ZEND_NULL_LABEL,
57543 			(void*)&&ZEND_NULL_LABEL,
57544 			(void*)&&ZEND_NULL_LABEL,
57545 			(void*)&&ZEND_NULL_LABEL,
57546 			(void*)&&ZEND_NULL_LABEL,
57547 			(void*)&&ZEND_NULL_LABEL,
57548 			(void*)&&ZEND_NULL_LABEL,
57549 			(void*)&&ZEND_NULL_LABEL,
57550 			(void*)&&ZEND_NULL_LABEL,
57551 			(void*)&&ZEND_NULL_LABEL,
57552 			(void*)&&ZEND_NULL_LABEL,
57553 			(void*)&&ZEND_NULL_LABEL,
57554 			(void*)&&ZEND_NULL_LABEL,
57555 			(void*)&&ZEND_NULL_LABEL,
57556 			(void*)&&ZEND_NULL_LABEL,
57557 			(void*)&&ZEND_NULL_LABEL,
57558 			(void*)&&ZEND_NULL_LABEL,
57559 			(void*)&&ZEND_NULL_LABEL,
57560 			(void*)&&ZEND_NULL_LABEL,
57561 			(void*)&&ZEND_NULL_LABEL,
57562 			(void*)&&ZEND_NULL_LABEL,
57563 			(void*)&&ZEND_NULL_LABEL,
57564 			(void*)&&ZEND_NULL_LABEL,
57565 			(void*)&&ZEND_NULL_LABEL,
57566 			(void*)&&ZEND_NULL_LABEL,
57567 			(void*)&&ZEND_NULL_LABEL,
57568 			(void*)&&ZEND_NULL_LABEL,
57569 			(void*)&&ZEND_NULL_LABEL,
57570 			(void*)&&ZEND_NULL_LABEL,
57571 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_LABEL,
57572 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_LABEL,
57573 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_LABEL,
57574 			(void*)&&ZEND_NULL_LABEL,
57575 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_LABEL,
57576 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
57577 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
57578 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
57579 			(void*)&&ZEND_NULL_LABEL,
57580 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
57581 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
57582 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
57583 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
57584 			(void*)&&ZEND_NULL_LABEL,
57585 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
57586 			(void*)&&ZEND_NULL_LABEL,
57587 			(void*)&&ZEND_NULL_LABEL,
57588 			(void*)&&ZEND_NULL_LABEL,
57589 			(void*)&&ZEND_NULL_LABEL,
57590 			(void*)&&ZEND_NULL_LABEL,
57591 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_LABEL,
57592 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_LABEL,
57593 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_LABEL,
57594 			(void*)&&ZEND_NULL_LABEL,
57595 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_LABEL,
57596 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_LABEL,
57597 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_LABEL,
57598 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_LABEL,
57599 			(void*)&&ZEND_NULL_LABEL,
57600 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_LABEL,
57601 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_LABEL,
57602 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_LABEL,
57603 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_LABEL,
57604 			(void*)&&ZEND_NULL_LABEL,
57605 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_LABEL,
57606 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_LABEL,
57607 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_LABEL,
57608 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_LABEL,
57609 			(void*)&&ZEND_NULL_LABEL,
57610 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_LABEL,
57611 			(void*)&&ZEND_NULL_LABEL,
57612 			(void*)&&ZEND_NULL_LABEL,
57613 			(void*)&&ZEND_NULL_LABEL,
57614 			(void*)&&ZEND_NULL_LABEL,
57615 			(void*)&&ZEND_NULL_LABEL,
57616 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_LABEL,
57617 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_LABEL,
57618 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_LABEL,
57619 			(void*)&&ZEND_NULL_LABEL,
57620 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_LABEL,
57621 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_LABEL,
57622 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_LABEL,
57623 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_LABEL,
57624 			(void*)&&ZEND_NULL_LABEL,
57625 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_LABEL,
57626 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
57627 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
57628 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
57629 			(void*)&&ZEND_NULL_LABEL,
57630 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
57631 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
57632 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
57633 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
57634 			(void*)&&ZEND_NULL_LABEL,
57635 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
57636 			(void*)&&ZEND_NULL_LABEL,
57637 			(void*)&&ZEND_NULL_LABEL,
57638 			(void*)&&ZEND_NULL_LABEL,
57639 			(void*)&&ZEND_NULL_LABEL,
57640 			(void*)&&ZEND_NULL_LABEL,
57641 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_LABEL,
57642 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_LABEL,
57643 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_LABEL,
57644 			(void*)&&ZEND_NULL_LABEL,
57645 			(void*)&&ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_LABEL,
57646 			(void*)&&ZEND_NULL_LABEL,
57647 			(void*)&&ZEND_NULL_LABEL,
57648 			(void*)&&ZEND_NULL_LABEL,
57649 			(void*)&&ZEND_NULL_LABEL,
57650 			(void*)&&ZEND_NULL_LABEL,
57651 			(void*)&&ZEND_NULL_LABEL,
57652 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_LABEL,
57653 			(void*)&&ZEND_NULL_LABEL,
57654 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_LABEL,
57655 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_LABEL,
57656 			(void*)&&ZEND_NULL_LABEL,
57657 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_LABEL,
57658 			(void*)&&ZEND_NULL_LABEL,
57659 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_LABEL,
57660 			(void*)&&ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_LABEL,
57661 			(void*)&&ZEND_NULL_LABEL,
57662 			(void*)&&ZEND_NULL_LABEL,
57663 			(void*)&&ZEND_NULL_LABEL,
57664 			(void*)&&ZEND_NULL_LABEL,
57665 			(void*)&&ZEND_NULL_LABEL,
57666 			(void*)&&ZEND_NULL_LABEL,
57667 			(void*)&&ZEND_INSTANCEOF_SPEC_CV_CONST_LABEL,
57668 			(void*)&&ZEND_NULL_LABEL,
57669 			(void*)&&ZEND_INSTANCEOF_SPEC_CV_VAR_LABEL,
57670 			(void*)&&ZEND_INSTANCEOF_SPEC_CV_UNUSED_LABEL,
57671 			(void*)&&ZEND_NULL_LABEL,
57672 			(void*)&&ZEND_DECLARE_CLASS_SPEC_LABEL,
57673 			(void*)&&ZEND_NULL_LABEL,
57674 			(void*)&&ZEND_NULL_LABEL,
57675 			(void*)&&ZEND_DECLARE_INHERITED_CLASS_SPEC_VAR_LABEL,
57676 			(void*)&&ZEND_NULL_LABEL,
57677 			(void*)&&ZEND_NULL_LABEL,
57678 			(void*)&&ZEND_DECLARE_FUNCTION_SPEC_LABEL,
57679 			(void*)&&ZEND_YIELD_FROM_SPEC_CONST_LABEL,
57680 			(void*)&&ZEND_YIELD_FROM_SPEC_TMP_LABEL,
57681 			(void*)&&ZEND_YIELD_FROM_SPEC_VAR_LABEL,
57682 			(void*)&&ZEND_NULL_LABEL,
57683 			(void*)&&ZEND_YIELD_FROM_SPEC_CV_LABEL,
57684 			(void*)&&ZEND_DECLARE_CONST_SPEC_CONST_CONST_LABEL,
57685 			(void*)&&ZEND_NULL_LABEL,
57686 			(void*)&&ZEND_NULL_LABEL,
57687 			(void*)&&ZEND_NULL_LABEL,
57688 			(void*)&&ZEND_NULL_LABEL,
57689 			(void*)&&ZEND_NULL_LABEL,
57690 			(void*)&&ZEND_NULL_LABEL,
57691 			(void*)&&ZEND_NULL_LABEL,
57692 			(void*)&&ZEND_NULL_LABEL,
57693 			(void*)&&ZEND_NULL_LABEL,
57694 			(void*)&&ZEND_NULL_LABEL,
57695 			(void*)&&ZEND_NULL_LABEL,
57696 			(void*)&&ZEND_NULL_LABEL,
57697 			(void*)&&ZEND_NULL_LABEL,
57698 			(void*)&&ZEND_NULL_LABEL,
57699 			(void*)&&ZEND_NULL_LABEL,
57700 			(void*)&&ZEND_NULL_LABEL,
57701 			(void*)&&ZEND_NULL_LABEL,
57702 			(void*)&&ZEND_NULL_LABEL,
57703 			(void*)&&ZEND_NULL_LABEL,
57704 			(void*)&&ZEND_NULL_LABEL,
57705 			(void*)&&ZEND_NULL_LABEL,
57706 			(void*)&&ZEND_NULL_LABEL,
57707 			(void*)&&ZEND_NULL_LABEL,
57708 			(void*)&&ZEND_NULL_LABEL,
57709 			(void*)&&ZEND_ADD_INTERFACE_SPEC_CONST_LABEL,
57710 			(void*)&&ZEND_NULL_LABEL,
57711 			(void*)&&ZEND_NULL_LABEL,
57712 			(void*)&&ZEND_NULL_LABEL,
57713 			(void*)&&ZEND_NULL_LABEL,
57714 			(void*)&&ZEND_NULL_LABEL,
57715 			(void*)&&ZEND_NULL_LABEL,
57716 			(void*)&&ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_VAR_LABEL,
57717 			(void*)&&ZEND_NULL_LABEL,
57718 			(void*)&&ZEND_NULL_LABEL,
57719 			(void*)&&ZEND_VERIFY_ABSTRACT_CLASS_SPEC_LABEL,
57720 			(void*)&&ZEND_NULL_LABEL,
57721 			(void*)&&ZEND_NULL_LABEL,
57722 			(void*)&&ZEND_NULL_LABEL,
57723 			(void*)&&ZEND_NULL_LABEL,
57724 			(void*)&&ZEND_NULL_LABEL,
57725 			(void*)&&ZEND_NULL_LABEL,
57726 			(void*)&&ZEND_NULL_LABEL,
57727 			(void*)&&ZEND_NULL_LABEL,
57728 			(void*)&&ZEND_NULL_LABEL,
57729 			(void*)&&ZEND_NULL_LABEL,
57730 			(void*)&&ZEND_NULL_LABEL,
57731 			(void*)&&ZEND_NULL_LABEL,
57732 			(void*)&&ZEND_NULL_LABEL,
57733 			(void*)&&ZEND_NULL_LABEL,
57734 			(void*)&&ZEND_NULL_LABEL,
57735 			(void*)&&ZEND_NULL_LABEL,
57736 			(void*)&&ZEND_NULL_LABEL,
57737 			(void*)&&ZEND_NULL_LABEL,
57738 			(void*)&&ZEND_NULL_LABEL,
57739 			(void*)&&ZEND_NULL_LABEL,
57740 			(void*)&&ZEND_NULL_LABEL,
57741 			(void*)&&ZEND_NULL_LABEL,
57742 			(void*)&&ZEND_NULL_LABEL,
57743 			(void*)&&ZEND_NULL_LABEL,
57744 			(void*)&&ZEND_NULL_LABEL,
57745 			(void*)&&ZEND_NULL_LABEL,
57746 			(void*)&&ZEND_NULL_LABEL,
57747 			(void*)&&ZEND_NULL_LABEL,
57748 			(void*)&&ZEND_NULL_LABEL,
57749 			(void*)&&ZEND_NULL_LABEL,
57750 			(void*)&&ZEND_NULL_LABEL,
57751 			(void*)&&ZEND_NULL_LABEL,
57752 			(void*)&&ZEND_NULL_LABEL,
57753 			(void*)&&ZEND_NULL_LABEL,
57754 			(void*)&&ZEND_NULL_LABEL,
57755 			(void*)&&ZEND_NULL_LABEL,
57756 			(void*)&&ZEND_NULL_LABEL,
57757 			(void*)&&ZEND_NULL_LABEL,
57758 			(void*)&&ZEND_NULL_LABEL,
57759 			(void*)&&ZEND_NULL_LABEL,
57760 			(void*)&&ZEND_NULL_LABEL,
57761 			(void*)&&ZEND_NULL_LABEL,
57762 			(void*)&&ZEND_NULL_LABEL,
57763 			(void*)&&ZEND_NULL_LABEL,
57764 			(void*)&&ZEND_NULL_LABEL,
57765 			(void*)&&ZEND_NULL_LABEL,
57766 			(void*)&&ZEND_NULL_LABEL,
57767 			(void*)&&ZEND_NULL_LABEL,
57768 			(void*)&&ZEND_NULL_LABEL,
57769 			(void*)&&ZEND_NULL_LABEL,
57770 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_LABEL,
57771 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_LABEL,
57772 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_LABEL,
57773 			(void*)&&ZEND_NULL_LABEL,
57774 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_LABEL,
57775 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
57776 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
57777 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
57778 			(void*)&&ZEND_NULL_LABEL,
57779 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
57780 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_LABEL,
57781 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_LABEL,
57782 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_LABEL,
57783 			(void*)&&ZEND_NULL_LABEL,
57784 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_LABEL,
57785 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_LABEL,
57786 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_LABEL,
57787 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_LABEL,
57788 			(void*)&&ZEND_NULL_LABEL,
57789 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_LABEL,
57790 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_LABEL,
57791 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_LABEL,
57792 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_LABEL,
57793 			(void*)&&ZEND_NULL_LABEL,
57794 			(void*)&&ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_LABEL,
57795 			(void*)&&ZEND_NULL_LABEL,
57796 			(void*)&&ZEND_NULL_LABEL,
57797 			(void*)&&ZEND_NULL_LABEL,
57798 			(void*)&&ZEND_NULL_LABEL,
57799 			(void*)&&ZEND_NULL_LABEL,
57800 			(void*)&&ZEND_NULL_LABEL,
57801 			(void*)&&ZEND_NULL_LABEL,
57802 			(void*)&&ZEND_NULL_LABEL,
57803 			(void*)&&ZEND_NULL_LABEL,
57804 			(void*)&&ZEND_NULL_LABEL,
57805 			(void*)&&ZEND_NULL_LABEL,
57806 			(void*)&&ZEND_NULL_LABEL,
57807 			(void*)&&ZEND_NULL_LABEL,
57808 			(void*)&&ZEND_NULL_LABEL,
57809 			(void*)&&ZEND_NULL_LABEL,
57810 			(void*)&&ZEND_NULL_LABEL,
57811 			(void*)&&ZEND_NULL_LABEL,
57812 			(void*)&&ZEND_NULL_LABEL,
57813 			(void*)&&ZEND_NULL_LABEL,
57814 			(void*)&&ZEND_NULL_LABEL,
57815 			(void*)&&ZEND_NULL_LABEL,
57816 			(void*)&&ZEND_NULL_LABEL,
57817 			(void*)&&ZEND_NULL_LABEL,
57818 			(void*)&&ZEND_NULL_LABEL,
57819 			(void*)&&ZEND_NULL_LABEL,
57820 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_LABEL,
57821 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_LABEL,
57822 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_LABEL,
57823 			(void*)&&ZEND_NULL_LABEL,
57824 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_LABEL,
57825 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
57826 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
57827 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
57828 			(void*)&&ZEND_NULL_LABEL,
57829 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
57830 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_LABEL,
57831 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_LABEL,
57832 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_LABEL,
57833 			(void*)&&ZEND_NULL_LABEL,
57834 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_LABEL,
57835 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_LABEL,
57836 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_LABEL,
57837 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_LABEL,
57838 			(void*)&&ZEND_NULL_LABEL,
57839 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_LABEL,
57840 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_LABEL,
57841 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_LABEL,
57842 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_LABEL,
57843 			(void*)&&ZEND_NULL_LABEL,
57844 			(void*)&&ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_LABEL,
57845 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_LABEL,
57846 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_LABEL,
57847 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_LABEL,
57848 			(void*)&&ZEND_NULL_LABEL,
57849 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_LABEL,
57850 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_LABEL,
57851 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57852 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57853 			(void*)&&ZEND_NULL_LABEL,
57854 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_LABEL,
57855 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_LABEL,
57856 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57857 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_LABEL,
57858 			(void*)&&ZEND_NULL_LABEL,
57859 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_LABEL,
57860 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_LABEL,
57861 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57862 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_LABEL,
57863 			(void*)&&ZEND_NULL_LABEL,
57864 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_LABEL,
57865 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_LABEL,
57866 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_LABEL,
57867 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_LABEL,
57868 			(void*)&&ZEND_NULL_LABEL,
57869 			(void*)&&ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_LABEL,
57870 			(void*)&&ZEND_HANDLE_EXCEPTION_SPEC_LABEL,
57871 			(void*)&&ZEND_USER_OPCODE_SPEC_LABEL,
57872 			(void*)&&ZEND_ASSERT_CHECK_SPEC_LABEL,
57873 			(void*)&&ZEND_JMP_SET_SPEC_CONST_LABEL,
57874 			(void*)&&ZEND_JMP_SET_SPEC_TMP_LABEL,
57875 			(void*)&&ZEND_JMP_SET_SPEC_VAR_LABEL,
57876 			(void*)&&ZEND_NULL_LABEL,
57877 			(void*)&&ZEND_JMP_SET_SPEC_CV_LABEL,
57878 			(void*)&&ZEND_NULL_LABEL,
57879 			(void*)&&ZEND_NULL_LABEL,
57880 			(void*)&&ZEND_NULL_LABEL,
57881 			(void*)&&ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_LABEL,
57882 			(void*)&&ZEND_NULL_LABEL,
57883 			(void*)&&ZEND_NULL_LABEL,
57884 			(void*)&&ZEND_NULL_LABEL,
57885 			(void*)&&ZEND_NULL_LABEL,
57886 			(void*)&&ZEND_NULL_LABEL,
57887 			(void*)&&ZEND_NULL_LABEL,
57888 			(void*)&&ZEND_NULL_LABEL,
57889 			(void*)&&ZEND_NULL_LABEL,
57890 			(void*)&&ZEND_NULL_LABEL,
57891 			(void*)&&ZEND_NULL_LABEL,
57892 			(void*)&&ZEND_NULL_LABEL,
57893 			(void*)&&ZEND_NULL_LABEL,
57894 			(void*)&&ZEND_NULL_LABEL,
57895 			(void*)&&ZEND_NULL_LABEL,
57896 			(void*)&&ZEND_NULL_LABEL,
57897 			(void*)&&ZEND_NULL_LABEL,
57898 			(void*)&&ZEND_NULL_LABEL,
57899 			(void*)&&ZEND_NULL_LABEL,
57900 			(void*)&&ZEND_NULL_LABEL,
57901 			(void*)&&ZEND_NULL_LABEL,
57902 			(void*)&&ZEND_NULL_LABEL,
57903 			(void*)&&ZEND_ADD_TRAIT_SPEC_LABEL,
57904 			(void*)&&ZEND_BIND_TRAITS_SPEC_LABEL,
57905 			(void*)&&ZEND_NULL_LABEL,
57906 			(void*)&&ZEND_NULL_LABEL,
57907 			(void*)&&ZEND_NULL_LABEL,
57908 			(void*)&&ZEND_NULL_LABEL,
57909 			(void*)&&ZEND_NULL_LABEL,
57910 			(void*)&&ZEND_NULL_LABEL,
57911 			(void*)&&ZEND_NULL_LABEL,
57912 			(void*)&&ZEND_NULL_LABEL,
57913 			(void*)&&ZEND_NULL_LABEL,
57914 			(void*)&&ZEND_NULL_LABEL,
57915 			(void*)&&ZEND_NULL_LABEL,
57916 			(void*)&&ZEND_NULL_LABEL,
57917 			(void*)&&ZEND_NULL_LABEL,
57918 			(void*)&&ZEND_SEPARATE_SPEC_VAR_UNUSED_LABEL,
57919 			(void*)&&ZEND_NULL_LABEL,
57920 			(void*)&&ZEND_NULL_LABEL,
57921 			(void*)&&ZEND_NULL_LABEL,
57922 			(void*)&&ZEND_NULL_LABEL,
57923 			(void*)&&ZEND_NULL_LABEL,
57924 			(void*)&&ZEND_NULL_LABEL,
57925 			(void*)&&ZEND_NULL_LABEL,
57926 			(void*)&&ZEND_NULL_LABEL,
57927 			(void*)&&ZEND_NULL_LABEL,
57928 			(void*)&&ZEND_NULL_LABEL,
57929 			(void*)&&ZEND_NULL_LABEL,
57930 			(void*)&&ZEND_FETCH_CLASS_NAME_SPEC_LABEL,
57931 			(void*)&&ZEND_CALL_TRAMPOLINE_SPEC_LABEL,
57932 			(void*)&&ZEND_DISCARD_EXCEPTION_SPEC_LABEL,
57933 			(void*)&&ZEND_YIELD_SPEC_CONST_CONST_LABEL,
57934 			(void*)&&ZEND_YIELD_SPEC_CONST_TMP_LABEL,
57935 			(void*)&&ZEND_YIELD_SPEC_CONST_VAR_LABEL,
57936 			(void*)&&ZEND_YIELD_SPEC_CONST_UNUSED_LABEL,
57937 			(void*)&&ZEND_YIELD_SPEC_CONST_CV_LABEL,
57938 			(void*)&&ZEND_YIELD_SPEC_TMP_CONST_LABEL,
57939 			(void*)&&ZEND_YIELD_SPEC_TMP_TMP_LABEL,
57940 			(void*)&&ZEND_YIELD_SPEC_TMP_VAR_LABEL,
57941 			(void*)&&ZEND_YIELD_SPEC_TMP_UNUSED_LABEL,
57942 			(void*)&&ZEND_YIELD_SPEC_TMP_CV_LABEL,
57943 			(void*)&&ZEND_YIELD_SPEC_VAR_CONST_LABEL,
57944 			(void*)&&ZEND_YIELD_SPEC_VAR_TMP_LABEL,
57945 			(void*)&&ZEND_YIELD_SPEC_VAR_VAR_LABEL,
57946 			(void*)&&ZEND_YIELD_SPEC_VAR_UNUSED_LABEL,
57947 			(void*)&&ZEND_YIELD_SPEC_VAR_CV_LABEL,
57948 			(void*)&&ZEND_YIELD_SPEC_UNUSED_CONST_LABEL,
57949 			(void*)&&ZEND_YIELD_SPEC_UNUSED_TMP_LABEL,
57950 			(void*)&&ZEND_YIELD_SPEC_UNUSED_VAR_LABEL,
57951 			(void*)&&ZEND_YIELD_SPEC_UNUSED_UNUSED_LABEL,
57952 			(void*)&&ZEND_YIELD_SPEC_UNUSED_CV_LABEL,
57953 			(void*)&&ZEND_YIELD_SPEC_CV_CONST_LABEL,
57954 			(void*)&&ZEND_YIELD_SPEC_CV_TMP_LABEL,
57955 			(void*)&&ZEND_YIELD_SPEC_CV_VAR_LABEL,
57956 			(void*)&&ZEND_YIELD_SPEC_CV_UNUSED_LABEL,
57957 			(void*)&&ZEND_YIELD_SPEC_CV_CV_LABEL,
57958 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_CONST_LABEL,
57959 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_TMP_LABEL,
57960 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_VAR_LABEL,
57961 			(void*)&&ZEND_NULL_LABEL,
57962 			(void*)&&ZEND_GENERATOR_RETURN_SPEC_CV_LABEL,
57963 			(void*)&&ZEND_FAST_CALL_SPEC_LABEL,
57964 			(void*)&&ZEND_FAST_RET_SPEC_LABEL,
57965 			(void*)&&ZEND_RECV_VARIADIC_SPEC_LABEL,
57966 			(void*)&&ZEND_SEND_UNPACK_SPEC_LABEL,
57967 			(void*)&&ZEND_POW_SPEC_CONST_CONST_LABEL,
57968 			(void*)&&ZEND_POW_SPEC_CONST_TMPVAR_LABEL,
57969 			(void*)&&ZEND_POW_SPEC_CONST_TMPVAR_LABEL,
57970 			(void*)&&ZEND_NULL_LABEL,
57971 			(void*)&&ZEND_POW_SPEC_CONST_CV_LABEL,
57972 			(void*)&&ZEND_POW_SPEC_TMPVAR_CONST_LABEL,
57973 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
57974 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
57975 			(void*)&&ZEND_NULL_LABEL,
57976 			(void*)&&ZEND_POW_SPEC_TMPVAR_CV_LABEL,
57977 			(void*)&&ZEND_POW_SPEC_TMPVAR_CONST_LABEL,
57978 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
57979 			(void*)&&ZEND_POW_SPEC_TMPVAR_TMPVAR_LABEL,
57980 			(void*)&&ZEND_NULL_LABEL,
57981 			(void*)&&ZEND_POW_SPEC_TMPVAR_CV_LABEL,
57982 			(void*)&&ZEND_NULL_LABEL,
57983 			(void*)&&ZEND_NULL_LABEL,
57984 			(void*)&&ZEND_NULL_LABEL,
57985 			(void*)&&ZEND_NULL_LABEL,
57986 			(void*)&&ZEND_NULL_LABEL,
57987 			(void*)&&ZEND_POW_SPEC_CV_CONST_LABEL,
57988 			(void*)&&ZEND_POW_SPEC_CV_TMPVAR_LABEL,
57989 			(void*)&&ZEND_POW_SPEC_CV_TMPVAR_LABEL,
57990 			(void*)&&ZEND_NULL_LABEL,
57991 			(void*)&&ZEND_POW_SPEC_CV_CV_LABEL,
57992 			(void*)&&ZEND_NULL_LABEL,
57993 			(void*)&&ZEND_NULL_LABEL,
57994 			(void*)&&ZEND_NULL_LABEL,
57995 			(void*)&&ZEND_NULL_LABEL,
57996 			(void*)&&ZEND_NULL_LABEL,
57997 			(void*)&&ZEND_NULL_LABEL,
57998 			(void*)&&ZEND_NULL_LABEL,
57999 			(void*)&&ZEND_NULL_LABEL,
58000 			(void*)&&ZEND_NULL_LABEL,
58001 			(void*)&&ZEND_NULL_LABEL,
58002 			(void*)&&ZEND_NULL_LABEL,
58003 			(void*)&&ZEND_NULL_LABEL,
58004 			(void*)&&ZEND_NULL_LABEL,
58005 			(void*)&&ZEND_NULL_LABEL,
58006 			(void*)&&ZEND_NULL_LABEL,
58007 			(void*)&&ZEND_NULL_LABEL,
58008 			(void*)&&ZEND_NULL_LABEL,
58009 			(void*)&&ZEND_NULL_LABEL,
58010 			(void*)&&ZEND_NULL_LABEL,
58011 			(void*)&&ZEND_NULL_LABEL,
58012 			(void*)&&ZEND_NULL_LABEL,
58013 			(void*)&&ZEND_NULL_LABEL,
58014 			(void*)&&ZEND_NULL_LABEL,
58015 			(void*)&&ZEND_NULL_LABEL,
58016 			(void*)&&ZEND_NULL_LABEL,
58017 			(void*)&&ZEND_NULL_LABEL,
58018 			(void*)&&ZEND_NULL_LABEL,
58019 			(void*)&&ZEND_NULL_LABEL,
58020 			(void*)&&ZEND_NULL_LABEL,
58021 			(void*)&&ZEND_NULL_LABEL,
58022 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_LABEL,
58023 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_LABEL,
58024 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_LABEL,
58025 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
58026 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
58027 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
58028 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_LABEL,
58029 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_LABEL,
58030 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_LABEL,
58031 			(void*)&&ZEND_NULL_LABEL,
58032 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_LABEL,
58033 			(void*)&&ZEND_NULL_LABEL,
58034 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_LABEL,
58035 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_LABEL,
58036 			(void*)&&ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_LABEL,
58037 			(void*)&&ZEND_NULL_LABEL,
58038 			(void*)&&ZEND_NULL_LABEL,
58039 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_LABEL,
58040 			(void*)&&ZEND_NULL_LABEL,
58041 			(void*)&&ZEND_NULL_LABEL,
58042 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
58043 			(void*)&&ZEND_NULL_LABEL,
58044 			(void*)&&ZEND_NULL_LABEL,
58045 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_LABEL,
58046 			(void*)&&ZEND_NULL_LABEL,
58047 			(void*)&&ZEND_NULL_LABEL,
58048 			(void*)&&ZEND_NULL_LABEL,
58049 			(void*)&&ZEND_NULL_LABEL,
58050 			(void*)&&ZEND_NULL_LABEL,
58051 			(void*)&&ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_LABEL,
58052 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_LABEL,
58053 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_LABEL,
58054 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_LABEL,
58055 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
58056 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
58057 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
58058 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_LABEL,
58059 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_LABEL,
58060 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_LABEL,
58061 			(void*)&&ZEND_NULL_LABEL,
58062 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_LABEL,
58063 			(void*)&&ZEND_NULL_LABEL,
58064 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_LABEL,
58065 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_LABEL,
58066 			(void*)&&ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_LABEL,
58067 			(void*)&&ZEND_NULL_LABEL,
58068 			(void*)&&ZEND_NULL_LABEL,
58069 			(void*)&&ZEND_NULL_LABEL,
58070 			(void*)&&ZEND_NULL_LABEL,
58071 			(void*)&&ZEND_NULL_LABEL,
58072 			(void*)&&ZEND_NULL_LABEL,
58073 			(void*)&&ZEND_NULL_LABEL,
58074 			(void*)&&ZEND_NULL_LABEL,
58075 			(void*)&&ZEND_NULL_LABEL,
58076 			(void*)&&ZEND_NULL_LABEL,
58077 			(void*)&&ZEND_NULL_LABEL,
58078 			(void*)&&ZEND_NULL_LABEL,
58079 			(void*)&&ZEND_NULL_LABEL,
58080 			(void*)&&ZEND_NULL_LABEL,
58081 			(void*)&&ZEND_NULL_LABEL,
58082 			(void*)&&ZEND_NULL_LABEL,
58083 			(void*)&&ZEND_NULL_LABEL,
58084 			(void*)&&ZEND_NULL_LABEL,
58085 			(void*)&&ZEND_NULL_LABEL,
58086 			(void*)&&ZEND_NULL_LABEL,
58087 			(void*)&&ZEND_BIND_GLOBAL_SPEC_CV_CONST_LABEL,
58088 			(void*)&&ZEND_NULL_LABEL,
58089 			(void*)&&ZEND_NULL_LABEL,
58090 			(void*)&&ZEND_NULL_LABEL,
58091 			(void*)&&ZEND_NULL_LABEL,
58092 			(void*)&&ZEND_COALESCE_SPEC_CONST_LABEL,
58093 			(void*)&&ZEND_COALESCE_SPEC_TMP_LABEL,
58094 			(void*)&&ZEND_COALESCE_SPEC_VAR_LABEL,
58095 			(void*)&&ZEND_NULL_LABEL,
58096 			(void*)&&ZEND_COALESCE_SPEC_CV_LABEL,
58097 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_CONST_LABEL,
58098 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
58099 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_TMPVAR_LABEL,
58100 			(void*)&&ZEND_NULL_LABEL,
58101 			(void*)&&ZEND_SPACESHIP_SPEC_CONST_CV_LABEL,
58102 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
58103 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
58104 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
58105 			(void*)&&ZEND_NULL_LABEL,
58106 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
58107 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CONST_LABEL,
58108 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
58109 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_LABEL,
58110 			(void*)&&ZEND_NULL_LABEL,
58111 			(void*)&&ZEND_SPACESHIP_SPEC_TMPVAR_CV_LABEL,
58112 			(void*)&&ZEND_NULL_LABEL,
58113 			(void*)&&ZEND_NULL_LABEL,
58114 			(void*)&&ZEND_NULL_LABEL,
58115 			(void*)&&ZEND_NULL_LABEL,
58116 			(void*)&&ZEND_NULL_LABEL,
58117 			(void*)&&ZEND_SPACESHIP_SPEC_CV_CONST_LABEL,
58118 			(void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
58119 			(void*)&&ZEND_SPACESHIP_SPEC_CV_TMPVAR_LABEL,
58120 			(void*)&&ZEND_NULL_LABEL,
58121 			(void*)&&ZEND_SPACESHIP_SPEC_CV_CV_LABEL,
58122 			(void*)&&ZEND_DECLARE_ANON_CLASS_SPEC_LABEL,
58123 			(void*)&&ZEND_NULL_LABEL,
58124 			(void*)&&ZEND_NULL_LABEL,
58125 			(void*)&&ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_VAR_LABEL,
58126 			(void*)&&ZEND_NULL_LABEL,
58127 			(void*)&&ZEND_NULL_LABEL,
58128 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_LABEL,
58129 			(void*)&&ZEND_NULL_LABEL,
58130 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_LABEL,
58131 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_LABEL,
58132 			(void*)&&ZEND_NULL_LABEL,
58133 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
58134 			(void*)&&ZEND_NULL_LABEL,
58135 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
58136 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
58137 			(void*)&&ZEND_NULL_LABEL,
58138 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_LABEL,
58139 			(void*)&&ZEND_NULL_LABEL,
58140 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_LABEL,
58141 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_LABEL,
58142 			(void*)&&ZEND_NULL_LABEL,
58143 			(void*)&&ZEND_NULL_LABEL,
58144 			(void*)&&ZEND_NULL_LABEL,
58145 			(void*)&&ZEND_NULL_LABEL,
58146 			(void*)&&ZEND_NULL_LABEL,
58147 			(void*)&&ZEND_NULL_LABEL,
58148 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_LABEL,
58149 			(void*)&&ZEND_NULL_LABEL,
58150 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_LABEL,
58151 			(void*)&&ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_LABEL,
58152 			(void*)&&ZEND_NULL_LABEL,
58153 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_LABEL,
58154 			(void*)&&ZEND_NULL_LABEL,
58155 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_LABEL,
58156 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_LABEL,
58157 			(void*)&&ZEND_NULL_LABEL,
58158 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
58159 			(void*)&&ZEND_NULL_LABEL,
58160 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
58161 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
58162 			(void*)&&ZEND_NULL_LABEL,
58163 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_LABEL,
58164 			(void*)&&ZEND_NULL_LABEL,
58165 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_LABEL,
58166 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_LABEL,
58167 			(void*)&&ZEND_NULL_LABEL,
58168 			(void*)&&ZEND_NULL_LABEL,
58169 			(void*)&&ZEND_NULL_LABEL,
58170 			(void*)&&ZEND_NULL_LABEL,
58171 			(void*)&&ZEND_NULL_LABEL,
58172 			(void*)&&ZEND_NULL_LABEL,
58173 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_LABEL,
58174 			(void*)&&ZEND_NULL_LABEL,
58175 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_LABEL,
58176 			(void*)&&ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_LABEL,
58177 			(void*)&&ZEND_NULL_LABEL,
58178 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_LABEL,
58179 			(void*)&&ZEND_NULL_LABEL,
58180 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_LABEL,
58181 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_LABEL,
58182 			(void*)&&ZEND_NULL_LABEL,
58183 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
58184 			(void*)&&ZEND_NULL_LABEL,
58185 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
58186 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
58187 			(void*)&&ZEND_NULL_LABEL,
58188 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_LABEL,
58189 			(void*)&&ZEND_NULL_LABEL,
58190 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_LABEL,
58191 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_LABEL,
58192 			(void*)&&ZEND_NULL_LABEL,
58193 			(void*)&&ZEND_NULL_LABEL,
58194 			(void*)&&ZEND_NULL_LABEL,
58195 			(void*)&&ZEND_NULL_LABEL,
58196 			(void*)&&ZEND_NULL_LABEL,
58197 			(void*)&&ZEND_NULL_LABEL,
58198 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_LABEL,
58199 			(void*)&&ZEND_NULL_LABEL,
58200 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_LABEL,
58201 			(void*)&&ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_LABEL,
58202 			(void*)&&ZEND_NULL_LABEL,
58203 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_LABEL,
58204 			(void*)&&ZEND_NULL_LABEL,
58205 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_LABEL,
58206 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_LABEL,
58207 			(void*)&&ZEND_NULL_LABEL,
58208 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
58209 			(void*)&&ZEND_NULL_LABEL,
58210 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
58211 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
58212 			(void*)&&ZEND_NULL_LABEL,
58213 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_LABEL,
58214 			(void*)&&ZEND_NULL_LABEL,
58215 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_LABEL,
58216 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_LABEL,
58217 			(void*)&&ZEND_NULL_LABEL,
58218 			(void*)&&ZEND_NULL_LABEL,
58219 			(void*)&&ZEND_NULL_LABEL,
58220 			(void*)&&ZEND_NULL_LABEL,
58221 			(void*)&&ZEND_NULL_LABEL,
58222 			(void*)&&ZEND_NULL_LABEL,
58223 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_LABEL,
58224 			(void*)&&ZEND_NULL_LABEL,
58225 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_LABEL,
58226 			(void*)&&ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_LABEL,
58227 			(void*)&&ZEND_NULL_LABEL,
58228 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_LABEL,
58229 			(void*)&&ZEND_NULL_LABEL,
58230 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_LABEL,
58231 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_LABEL,
58232 			(void*)&&ZEND_NULL_LABEL,
58233 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
58234 			(void*)&&ZEND_NULL_LABEL,
58235 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
58236 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
58237 			(void*)&&ZEND_NULL_LABEL,
58238 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_LABEL,
58239 			(void*)&&ZEND_NULL_LABEL,
58240 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_LABEL,
58241 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_LABEL,
58242 			(void*)&&ZEND_NULL_LABEL,
58243 			(void*)&&ZEND_NULL_LABEL,
58244 			(void*)&&ZEND_NULL_LABEL,
58245 			(void*)&&ZEND_NULL_LABEL,
58246 			(void*)&&ZEND_NULL_LABEL,
58247 			(void*)&&ZEND_NULL_LABEL,
58248 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_LABEL,
58249 			(void*)&&ZEND_NULL_LABEL,
58250 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_LABEL,
58251 			(void*)&&ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_LABEL,
58252 			(void*)&&ZEND_NULL_LABEL,
58253 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_LABEL,
58254 			(void*)&&ZEND_NULL_LABEL,
58255 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_LABEL,
58256 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_LABEL,
58257 			(void*)&&ZEND_NULL_LABEL,
58258 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
58259 			(void*)&&ZEND_NULL_LABEL,
58260 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
58261 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
58262 			(void*)&&ZEND_NULL_LABEL,
58263 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_LABEL,
58264 			(void*)&&ZEND_NULL_LABEL,
58265 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_LABEL,
58266 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_LABEL,
58267 			(void*)&&ZEND_NULL_LABEL,
58268 			(void*)&&ZEND_NULL_LABEL,
58269 			(void*)&&ZEND_NULL_LABEL,
58270 			(void*)&&ZEND_NULL_LABEL,
58271 			(void*)&&ZEND_NULL_LABEL,
58272 			(void*)&&ZEND_NULL_LABEL,
58273 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_LABEL,
58274 			(void*)&&ZEND_NULL_LABEL,
58275 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_LABEL,
58276 			(void*)&&ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_LABEL,
58277 			(void*)&&ZEND_NULL_LABEL,
58278 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_LABEL,
58279 			(void*)&&ZEND_NULL_LABEL,
58280 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_LABEL,
58281 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
58282 			(void*)&&ZEND_NULL_LABEL,
58283 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
58284 			(void*)&&ZEND_NULL_LABEL,
58285 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
58286 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
58287 			(void*)&&ZEND_NULL_LABEL,
58288 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
58289 			(void*)&&ZEND_NULL_LABEL,
58290 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
58291 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
58292 			(void*)&&ZEND_NULL_LABEL,
58293 			(void*)&&ZEND_NULL_LABEL,
58294 			(void*)&&ZEND_NULL_LABEL,
58295 			(void*)&&ZEND_NULL_LABEL,
58296 			(void*)&&ZEND_NULL_LABEL,
58297 			(void*)&&ZEND_NULL_LABEL,
58298 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_LABEL,
58299 			(void*)&&ZEND_NULL_LABEL,
58300 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_LABEL,
58301 			(void*)&&ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
58302 			(void*)&&ZEND_NULL_LABEL,
58303 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_LABEL,
58304 			(void*)&&ZEND_NULL_LABEL,
58305 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_LABEL,
58306 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_LABEL,
58307 			(void*)&&ZEND_NULL_LABEL,
58308 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
58309 			(void*)&&ZEND_NULL_LABEL,
58310 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
58311 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
58312 			(void*)&&ZEND_NULL_LABEL,
58313 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_LABEL,
58314 			(void*)&&ZEND_NULL_LABEL,
58315 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_LABEL,
58316 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_LABEL,
58317 			(void*)&&ZEND_NULL_LABEL,
58318 			(void*)&&ZEND_NULL_LABEL,
58319 			(void*)&&ZEND_NULL_LABEL,
58320 			(void*)&&ZEND_NULL_LABEL,
58321 			(void*)&&ZEND_NULL_LABEL,
58322 			(void*)&&ZEND_NULL_LABEL,
58323 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_LABEL,
58324 			(void*)&&ZEND_NULL_LABEL,
58325 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_LABEL,
58326 			(void*)&&ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_LABEL,
58327 			(void*)&&ZEND_NULL_LABEL,
58328 			(void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_LABEL,
58329 			(void*)&&ZEND_NULL_LABEL,
58330 			(void*)&&ZEND_NULL_LABEL,
58331 			(void*)&&ZEND_NULL_LABEL,
58332 			(void*)&&ZEND_NULL_LABEL,
58333 			(void*)&&ZEND_NULL_LABEL,
58334 			(void*)&&ZEND_NULL_LABEL,
58335 			(void*)&&ZEND_NULL_LABEL,
58336 			(void*)&&ZEND_NULL_LABEL,
58337 			(void*)&&ZEND_NULL_LABEL,
58338 			(void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_LABEL,
58339 			(void*)&&ZEND_NULL_LABEL,
58340 			(void*)&&ZEND_NULL_LABEL,
58341 			(void*)&&ZEND_NULL_LABEL,
58342 			(void*)&&ZEND_NULL_LABEL,
58343 			(void*)&&ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_LABEL,
58344 			(void*)&&ZEND_NULL_LABEL,
58345 			(void*)&&ZEND_NULL_LABEL,
58346 			(void*)&&ZEND_NULL_LABEL,
58347 			(void*)&&ZEND_NULL_LABEL,
58348 			(void*)&&ZEND_NULL_LABEL,
58349 			(void*)&&ZEND_NULL_LABEL,
58350 			(void*)&&ZEND_NULL_LABEL,
58351 			(void*)&&ZEND_NULL_LABEL,
58352 			(void*)&&ZEND_NULL_LABEL,
58353 			(void*)&&ZEND_NULL_LABEL,
58354 			(void*)&&ZEND_NULL_LABEL,
58355 			(void*)&&ZEND_NULL_LABEL,
58356 			(void*)&&ZEND_NULL_LABEL,
58357 			(void*)&&ZEND_NULL_LABEL,
58358 			(void*)&&ZEND_NULL_LABEL,
58359 			(void*)&&ZEND_NULL_LABEL,
58360 			(void*)&&ZEND_NULL_LABEL,
58361 			(void*)&&ZEND_NULL_LABEL,
58362 			(void*)&&ZEND_BIND_LEXICAL_SPEC_TMP_CV_LABEL,
58363 			(void*)&&ZEND_NULL_LABEL,
58364 			(void*)&&ZEND_NULL_LABEL,
58365 			(void*)&&ZEND_NULL_LABEL,
58366 			(void*)&&ZEND_NULL_LABEL,
58367 			(void*)&&ZEND_NULL_LABEL,
58368 			(void*)&&ZEND_NULL_LABEL,
58369 			(void*)&&ZEND_NULL_LABEL,
58370 			(void*)&&ZEND_NULL_LABEL,
58371 			(void*)&&ZEND_NULL_LABEL,
58372 			(void*)&&ZEND_NULL_LABEL,
58373 			(void*)&&ZEND_NULL_LABEL,
58374 			(void*)&&ZEND_NULL_LABEL,
58375 			(void*)&&ZEND_NULL_LABEL,
58376 			(void*)&&ZEND_NULL_LABEL,
58377 			(void*)&&ZEND_NULL_LABEL,
58378 			(void*)&&ZEND_NULL_LABEL,
58379 			(void*)&&ZEND_NULL_LABEL,
58380 			(void*)&&ZEND_NULL_LABEL,
58381 			(void*)&&ZEND_NULL_LABEL,
58382 			(void*)&&ZEND_NULL_LABEL,
58383 			(void*)&&ZEND_NULL_LABEL,
58384 			(void*)&&ZEND_NULL_LABEL,
58385 			(void*)&&ZEND_NULL_LABEL,
58386 			(void*)&&ZEND_NULL_LABEL,
58387 			(void*)&&ZEND_NULL_LABEL,
58388 			(void*)&&ZEND_NULL_LABEL,
58389 			(void*)&&ZEND_NULL_LABEL,
58390 			(void*)&&ZEND_NULL_LABEL,
58391 			(void*)&&ZEND_NULL_LABEL,
58392 			(void*)&&ZEND_NULL_LABEL,
58393 			(void*)&&ZEND_NULL_LABEL,
58394 			(void*)&&ZEND_NULL_LABEL,
58395 			(void*)&&ZEND_NULL_LABEL,
58396 			(void*)&&ZEND_NULL_LABEL,
58397 			(void*)&&ZEND_NULL_LABEL,
58398 			(void*)&&ZEND_BIND_STATIC_SPEC_CV_CONST_LABEL,
58399 			(void*)&&ZEND_NULL_LABEL,
58400 			(void*)&&ZEND_NULL_LABEL,
58401 			(void*)&&ZEND_NULL_LABEL,
58402 			(void*)&&ZEND_NULL_LABEL,
58403 			(void*)&&ZEND_NULL_LABEL,
58404 			(void*)&&ZEND_NULL_LABEL,
58405 			(void*)&&ZEND_NULL_LABEL,
58406 			(void*)&&ZEND_NULL_LABEL,
58407 			(void*)&&ZEND_NULL_LABEL,
58408 			(void*)&&ZEND_NULL_LABEL,
58409 			(void*)&&ZEND_NULL_LABEL,
58410 			(void*)&&ZEND_NULL_LABEL,
58411 			(void*)&&ZEND_NULL_LABEL,
58412 			(void*)&&ZEND_NULL_LABEL,
58413 			(void*)&&ZEND_NULL_LABEL,
58414 			(void*)&&ZEND_NULL_LABEL,
58415 			(void*)&&ZEND_NULL_LABEL,
58416 			(void*)&&ZEND_NULL_LABEL,
58417 			(void*)&&ZEND_NULL_LABEL,
58418 			(void*)&&ZEND_NULL_LABEL,
58419 			(void*)&&ZEND_NULL_LABEL,
58420 			(void*)&&ZEND_NULL_LABEL,
58421 			(void*)&&ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_LABEL,
58422 			(void*)&&ZEND_NULL_LABEL,
58423 			(void*)&&ZEND_NULL_LABEL,
58424 			(void*)&&ZEND_NULL_LABEL,
58425 			(void*)&&ZEND_NULL_LABEL,
58426 			(void*)&&ZEND_NULL_LABEL,
58427 			(void*)&&ZEND_NULL_LABEL,
58428 			(void*)&&ZEND_NULL_LABEL,
58429 			(void*)&&ZEND_NULL_LABEL,
58430 			(void*)&&ZEND_NULL_LABEL,
58431 			(void*)&&ZEND_NULL_LABEL,
58432 			(void*)&&ZEND_NULL_LABEL,
58433 			(void*)&&ZEND_NULL_LABEL,
58434 			(void*)&&ZEND_NULL_LABEL,
58435 			(void*)&&ZEND_NULL_LABEL,
58436 			(void*)&&ZEND_NULL_LABEL,
58437 			(void*)&&ZEND_NULL_LABEL,
58438 			(void*)&&ZEND_NULL_LABEL,
58439 			(void*)&&ZEND_NULL_LABEL,
58440 			(void*)&&ZEND_NULL_LABEL,
58441 			(void*)&&ZEND_NULL_LABEL,
58442 			(void*)&&ZEND_NULL_LABEL,
58443 			(void*)&&ZEND_NULL_LABEL,
58444 			(void*)&&ZEND_NULL_LABEL,
58445 			(void*)&&ZEND_NULL_LABEL,
58446 			(void*)&&ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_LABEL,
58447 			(void*)&&ZEND_NULL_LABEL,
58448 			(void*)&&ZEND_NULL_LABEL,
58449 			(void*)&&ZEND_NULL_LABEL,
58450 			(void*)&&ZEND_NULL_LABEL,
58451 			(void*)&&ZEND_NULL_LABEL,
58452 			(void*)&&ZEND_NULL_LABEL,
58453 			(void*)&&ZEND_SWITCH_LONG_SPEC_CONST_CONST_LABEL,
58454 			(void*)&&ZEND_NULL_LABEL,
58455 			(void*)&&ZEND_NULL_LABEL,
58456 			(void*)&&ZEND_NULL_LABEL,
58457 			(void*)&&ZEND_NULL_LABEL,
58458 			(void*)&&ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_LABEL,
58459 			(void*)&&ZEND_NULL_LABEL,
58460 			(void*)&&ZEND_NULL_LABEL,
58461 			(void*)&&ZEND_NULL_LABEL,
58462 			(void*)&&ZEND_NULL_LABEL,
58463 			(void*)&&ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_LABEL,
58464 			(void*)&&ZEND_NULL_LABEL,
58465 			(void*)&&ZEND_NULL_LABEL,
58466 			(void*)&&ZEND_NULL_LABEL,
58467 			(void*)&&ZEND_NULL_LABEL,
58468 			(void*)&&ZEND_NULL_LABEL,
58469 			(void*)&&ZEND_NULL_LABEL,
58470 			(void*)&&ZEND_NULL_LABEL,
58471 			(void*)&&ZEND_NULL_LABEL,
58472 			(void*)&&ZEND_NULL_LABEL,
58473 			(void*)&&ZEND_SWITCH_LONG_SPEC_CV_CONST_LABEL,
58474 			(void*)&&ZEND_NULL_LABEL,
58475 			(void*)&&ZEND_NULL_LABEL,
58476 			(void*)&&ZEND_NULL_LABEL,
58477 			(void*)&&ZEND_NULL_LABEL,
58478 			(void*)&&ZEND_SWITCH_STRING_SPEC_CONST_CONST_LABEL,
58479 			(void*)&&ZEND_NULL_LABEL,
58480 			(void*)&&ZEND_NULL_LABEL,
58481 			(void*)&&ZEND_NULL_LABEL,
58482 			(void*)&&ZEND_NULL_LABEL,
58483 			(void*)&&ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_LABEL,
58484 			(void*)&&ZEND_NULL_LABEL,
58485 			(void*)&&ZEND_NULL_LABEL,
58486 			(void*)&&ZEND_NULL_LABEL,
58487 			(void*)&&ZEND_NULL_LABEL,
58488 			(void*)&&ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_LABEL,
58489 			(void*)&&ZEND_NULL_LABEL,
58490 			(void*)&&ZEND_NULL_LABEL,
58491 			(void*)&&ZEND_NULL_LABEL,
58492 			(void*)&&ZEND_NULL_LABEL,
58493 			(void*)&&ZEND_NULL_LABEL,
58494 			(void*)&&ZEND_NULL_LABEL,
58495 			(void*)&&ZEND_NULL_LABEL,
58496 			(void*)&&ZEND_NULL_LABEL,
58497 			(void*)&&ZEND_NULL_LABEL,
58498 			(void*)&&ZEND_SWITCH_STRING_SPEC_CV_CONST_LABEL,
58499 			(void*)&&ZEND_NULL_LABEL,
58500 			(void*)&&ZEND_NULL_LABEL,
58501 			(void*)&&ZEND_NULL_LABEL,
58502 			(void*)&&ZEND_NULL_LABEL,
58503 			(void*)&&ZEND_IN_ARRAY_SPEC_CONST_CONST_LABEL,
58504 			(void*)&&ZEND_NULL_LABEL,
58505 			(void*)&&ZEND_NULL_LABEL,
58506 			(void*)&&ZEND_NULL_LABEL,
58507 			(void*)&&ZEND_NULL_LABEL,
58508 			(void*)&&ZEND_IN_ARRAY_SPEC_TMP_CONST_LABEL,
58509 			(void*)&&ZEND_NULL_LABEL,
58510 			(void*)&&ZEND_NULL_LABEL,
58511 			(void*)&&ZEND_NULL_LABEL,
58512 			(void*)&&ZEND_NULL_LABEL,
58513 			(void*)&&ZEND_IN_ARRAY_SPEC_VAR_CONST_LABEL,
58514 			(void*)&&ZEND_NULL_LABEL,
58515 			(void*)&&ZEND_NULL_LABEL,
58516 			(void*)&&ZEND_NULL_LABEL,
58517 			(void*)&&ZEND_NULL_LABEL,
58518 			(void*)&&ZEND_NULL_LABEL,
58519 			(void*)&&ZEND_NULL_LABEL,
58520 			(void*)&&ZEND_NULL_LABEL,
58521 			(void*)&&ZEND_NULL_LABEL,
58522 			(void*)&&ZEND_NULL_LABEL,
58523 			(void*)&&ZEND_IN_ARRAY_SPEC_CV_CONST_LABEL,
58524 			(void*)&&ZEND_NULL_LABEL,
58525 			(void*)&&ZEND_NULL_LABEL,
58526 			(void*)&&ZEND_NULL_LABEL,
58527 			(void*)&&ZEND_NULL_LABEL,
58528 			(void*)&&ZEND_NULL_LABEL,
58529 			(void*)&&ZEND_NULL_LABEL,
58530 			(void*)&&ZEND_NULL_LABEL,
58531 			(void*)&&ZEND_COUNT_SPEC_CONST_UNUSED_LABEL,
58532 			(void*)&&ZEND_NULL_LABEL,
58533 			(void*)&&ZEND_NULL_LABEL,
58534 			(void*)&&ZEND_NULL_LABEL,
58535 			(void*)&&ZEND_NULL_LABEL,
58536 			(void*)&&ZEND_COUNT_SPEC_TMP_UNUSED_LABEL,
58537 			(void*)&&ZEND_NULL_LABEL,
58538 			(void*)&&ZEND_NULL_LABEL,
58539 			(void*)&&ZEND_NULL_LABEL,
58540 			(void*)&&ZEND_NULL_LABEL,
58541 			(void*)&&ZEND_COUNT_SPEC_VAR_UNUSED_LABEL,
58542 			(void*)&&ZEND_NULL_LABEL,
58543 			(void*)&&ZEND_NULL_LABEL,
58544 			(void*)&&ZEND_NULL_LABEL,
58545 			(void*)&&ZEND_NULL_LABEL,
58546 			(void*)&&ZEND_NULL_LABEL,
58547 			(void*)&&ZEND_NULL_LABEL,
58548 			(void*)&&ZEND_NULL_LABEL,
58549 			(void*)&&ZEND_NULL_LABEL,
58550 			(void*)&&ZEND_NULL_LABEL,
58551 			(void*)&&ZEND_COUNT_SPEC_CV_UNUSED_LABEL,
58552 			(void*)&&ZEND_NULL_LABEL,
58553 			(void*)&&ZEND_NULL_LABEL,
58554 			(void*)&&ZEND_NULL_LABEL,
58555 			(void*)&&ZEND_NULL_LABEL,
58556 			(void*)&&ZEND_GET_CLASS_SPEC_CONST_UNUSED_LABEL,
58557 			(void*)&&ZEND_NULL_LABEL,
58558 			(void*)&&ZEND_NULL_LABEL,
58559 			(void*)&&ZEND_NULL_LABEL,
58560 			(void*)&&ZEND_NULL_LABEL,
58561 			(void*)&&ZEND_GET_CLASS_SPEC_TMP_UNUSED_LABEL,
58562 			(void*)&&ZEND_NULL_LABEL,
58563 			(void*)&&ZEND_NULL_LABEL,
58564 			(void*)&&ZEND_NULL_LABEL,
58565 			(void*)&&ZEND_NULL_LABEL,
58566 			(void*)&&ZEND_GET_CLASS_SPEC_VAR_UNUSED_LABEL,
58567 			(void*)&&ZEND_NULL_LABEL,
58568 			(void*)&&ZEND_NULL_LABEL,
58569 			(void*)&&ZEND_NULL_LABEL,
58570 			(void*)&&ZEND_NULL_LABEL,
58571 			(void*)&&ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_LABEL,
58572 			(void*)&&ZEND_NULL_LABEL,
58573 			(void*)&&ZEND_NULL_LABEL,
58574 			(void*)&&ZEND_NULL_LABEL,
58575 			(void*)&&ZEND_NULL_LABEL,
58576 			(void*)&&ZEND_GET_CLASS_SPEC_CV_UNUSED_LABEL,
58577 			(void*)&&ZEND_NULL_LABEL,
58578 			(void*)&&ZEND_NULL_LABEL,
58579 			(void*)&&ZEND_NULL_LABEL,
58580 			(void*)&&ZEND_NULL_LABEL,
58581 			(void*)&&ZEND_NULL_LABEL,
58582 			(void*)&&ZEND_NULL_LABEL,
58583 			(void*)&&ZEND_NULL_LABEL,
58584 			(void*)&&ZEND_NULL_LABEL,
58585 			(void*)&&ZEND_NULL_LABEL,
58586 			(void*)&&ZEND_NULL_LABEL,
58587 			(void*)&&ZEND_NULL_LABEL,
58588 			(void*)&&ZEND_NULL_LABEL,
58589 			(void*)&&ZEND_NULL_LABEL,
58590 			(void*)&&ZEND_NULL_LABEL,
58591 			(void*)&&ZEND_NULL_LABEL,
58592 			(void*)&&ZEND_NULL_LABEL,
58593 			(void*)&&ZEND_NULL_LABEL,
58594 			(void*)&&ZEND_NULL_LABEL,
58595 			(void*)&&ZEND_NULL_LABEL,
58596 			(void*)&&ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_LABEL,
58597 			(void*)&&ZEND_NULL_LABEL,
58598 			(void*)&&ZEND_NULL_LABEL,
58599 			(void*)&&ZEND_NULL_LABEL,
58600 			(void*)&&ZEND_NULL_LABEL,
58601 			(void*)&&ZEND_NULL_LABEL,
58602 			(void*)&&ZEND_NULL_LABEL,
58603 			(void*)&&ZEND_NULL_LABEL,
58604 			(void*)&&ZEND_NULL_LABEL,
58605 			(void*)&&ZEND_NULL_LABEL,
58606 			(void*)&&ZEND_GET_TYPE_SPEC_CONST_UNUSED_LABEL,
58607 			(void*)&&ZEND_NULL_LABEL,
58608 			(void*)&&ZEND_NULL_LABEL,
58609 			(void*)&&ZEND_NULL_LABEL,
58610 			(void*)&&ZEND_NULL_LABEL,
58611 			(void*)&&ZEND_GET_TYPE_SPEC_TMP_UNUSED_LABEL,
58612 			(void*)&&ZEND_NULL_LABEL,
58613 			(void*)&&ZEND_NULL_LABEL,
58614 			(void*)&&ZEND_NULL_LABEL,
58615 			(void*)&&ZEND_NULL_LABEL,
58616 			(void*)&&ZEND_GET_TYPE_SPEC_VAR_UNUSED_LABEL,
58617 			(void*)&&ZEND_NULL_LABEL,
58618 			(void*)&&ZEND_NULL_LABEL,
58619 			(void*)&&ZEND_NULL_LABEL,
58620 			(void*)&&ZEND_NULL_LABEL,
58621 			(void*)&&ZEND_NULL_LABEL,
58622 			(void*)&&ZEND_NULL_LABEL,
58623 			(void*)&&ZEND_NULL_LABEL,
58624 			(void*)&&ZEND_NULL_LABEL,
58625 			(void*)&&ZEND_NULL_LABEL,
58626 			(void*)&&ZEND_GET_TYPE_SPEC_CV_UNUSED_LABEL,
58627 			(void*)&&ZEND_NULL_LABEL,
58628 			(void*)&&ZEND_NULL_LABEL,
58629 			(void*)&&ZEND_NULL_LABEL,
58630 			(void*)&&ZEND_NULL_LABEL,
58631 			(void*)&&ZEND_NULL_LABEL,
58632 			(void*)&&ZEND_NULL_LABEL,
58633 			(void*)&&ZEND_NULL_LABEL,
58634 			(void*)&&ZEND_NULL_LABEL,
58635 			(void*)&&ZEND_NULL_LABEL,
58636 			(void*)&&ZEND_NULL_LABEL,
58637 			(void*)&&ZEND_NULL_LABEL,
58638 			(void*)&&ZEND_NULL_LABEL,
58639 			(void*)&&ZEND_NULL_LABEL,
58640 			(void*)&&ZEND_NULL_LABEL,
58641 			(void*)&&ZEND_NULL_LABEL,
58642 			(void*)&&ZEND_NULL_LABEL,
58643 			(void*)&&ZEND_NULL_LABEL,
58644 			(void*)&&ZEND_NULL_LABEL,
58645 			(void*)&&ZEND_NULL_LABEL,
58646 			(void*)&&ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_LABEL,
58647 			(void*)&&ZEND_NULL_LABEL,
58648 			(void*)&&ZEND_NULL_LABEL,
58649 			(void*)&&ZEND_NULL_LABEL,
58650 			(void*)&&ZEND_NULL_LABEL,
58651 			(void*)&&ZEND_NULL_LABEL,
58652 			(void*)&&ZEND_NULL_LABEL,
58653 			(void*)&&ZEND_NULL_LABEL,
58654 			(void*)&&ZEND_NULL_LABEL,
58655 			(void*)&&ZEND_NULL_LABEL,
58656 			(void*)&&ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_LABEL,
58657 			(void*)&&ZEND_NULL_LABEL,
58658 			(void*)&&ZEND_NULL_LABEL,
58659 			(void*)&&ZEND_NULL_LABEL,
58660 			(void*)&&ZEND_NULL_LABEL,
58661 			(void*)&&ZEND_NULL_LABEL,
58662 			(void*)&&ZEND_NULL_LABEL,
58663 			(void*)&&ZEND_NULL_LABEL,
58664 			(void*)&&ZEND_NULL_LABEL,
58665 			(void*)&&ZEND_NULL_LABEL,
58666 			(void*)&&ZEND_NULL_LABEL,
58667 			(void*)&&ZEND_NULL_LABEL,
58668 			(void*)&&ZEND_NULL_LABEL,
58669 			(void*)&&ZEND_NULL_LABEL,
58670 			(void*)&&ZEND_NULL_LABEL,
58671 			(void*)&&ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_LABEL,
58672 			(void*)&&ZEND_NULL_LABEL,
58673 			(void*)&&ZEND_NULL_LABEL,
58674 			(void*)&&ZEND_NULL_LABEL,
58675 			(void*)&&ZEND_NULL_LABEL,
58676 			(void*)&&ZEND_NULL_LABEL,
58677 			(void*)&&ZEND_NULL_LABEL,
58678 			(void*)&&ZEND_NULL_LABEL,
58679 			(void*)&&ZEND_NULL_LABEL,
58680 			(void*)&&ZEND_NULL_LABEL,
58681 			(void*)&&ZEND_NULL_LABEL,
58682 			(void*)&&ZEND_NULL_LABEL,
58683 			(void*)&&ZEND_NULL_LABEL,
58684 			(void*)&&ZEND_NULL_LABEL,
58685 			(void*)&&ZEND_NULL_LABEL,
58686 			(void*)&&ZEND_NULL_LABEL,
58687 			(void*)&&ZEND_NULL_LABEL,
58688 			(void*)&&ZEND_NULL_LABEL,
58689 			(void*)&&ZEND_NULL_LABEL,
58690 			(void*)&&ZEND_NULL_LABEL,
58691 			(void*)&&ZEND_NULL_LABEL,
58692 			(void*)&&ZEND_NULL_LABEL,
58693 			(void*)&&ZEND_NULL_LABEL,
58694 			(void*)&&ZEND_NULL_LABEL,
58695 			(void*)&&ZEND_NULL_LABEL,
58696 			(void*)&&ZEND_NULL_LABEL,
58697 			(void*)&&ZEND_NULL_LABEL,
58698 			(void*)&&ZEND_NULL_LABEL,
58699 			(void*)&&ZEND_NULL_LABEL,
58700 			(void*)&&ZEND_NULL_LABEL,
58701 			(void*)&&ZEND_UNSET_CV_SPEC_CV_UNUSED_LABEL,
58702 			(void*)&&ZEND_NULL_LABEL,
58703 			(void*)&&ZEND_NULL_LABEL,
58704 			(void*)&&ZEND_NULL_LABEL,
58705 			(void*)&&ZEND_NULL_LABEL,
58706 			(void*)&&ZEND_NULL_LABEL,
58707 			(void*)&&ZEND_NULL_LABEL,
58708 			(void*)&&ZEND_NULL_LABEL,
58709 			(void*)&&ZEND_NULL_LABEL,
58710 			(void*)&&ZEND_NULL_LABEL,
58711 			(void*)&&ZEND_NULL_LABEL,
58712 			(void*)&&ZEND_NULL_LABEL,
58713 			(void*)&&ZEND_NULL_LABEL,
58714 			(void*)&&ZEND_NULL_LABEL,
58715 			(void*)&&ZEND_NULL_LABEL,
58716 			(void*)&&ZEND_NULL_LABEL,
58717 			(void*)&&ZEND_NULL_LABEL,
58718 			(void*)&&ZEND_NULL_LABEL,
58719 			(void*)&&ZEND_NULL_LABEL,
58720 			(void*)&&ZEND_NULL_LABEL,
58721 			(void*)&&ZEND_NULL_LABEL,
58722 			(void*)&&ZEND_NULL_LABEL,
58723 			(void*)&&ZEND_NULL_LABEL,
58724 			(void*)&&ZEND_NULL_LABEL,
58725 			(void*)&&ZEND_NULL_LABEL,
58726 			(void*)&&ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_LABEL,
58727 			(void*)&&ZEND_NULL_LABEL,
58728 			(void*)&&ZEND_NULL_LABEL,
58729 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58730 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58731 			(void*)&&ZEND_NULL_LABEL,
58732 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58733 			(void*)&&ZEND_NULL_LABEL,
58734 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58735 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58736 			(void*)&&ZEND_NULL_LABEL,
58737 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58738 			(void*)&&ZEND_NULL_LABEL,
58739 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58740 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58741 			(void*)&&ZEND_NULL_LABEL,
58742 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58743 			(void*)&&ZEND_NULL_LABEL,
58744 			(void*)&&ZEND_NULL_LABEL,
58745 			(void*)&&ZEND_NULL_LABEL,
58746 			(void*)&&ZEND_NULL_LABEL,
58747 			(void*)&&ZEND_NULL_LABEL,
58748 			(void*)&&ZEND_NULL_LABEL,
58749 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58750 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58751 			(void*)&&ZEND_NULL_LABEL,
58752 			(void*)&&ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58753 			(void*)&&ZEND_NULL_LABEL,
58754 			(void*)&&ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_LABEL,
58755 			(void*)&&ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_LABEL,
58756 			(void*)&&ZEND_NULL_LABEL,
58757 			(void*)&&ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_LABEL,
58758 			(void*)&&ZEND_NULL_LABEL,
58759 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58760 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58761 			(void*)&&ZEND_NULL_LABEL,
58762 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58763 			(void*)&&ZEND_NULL_LABEL,
58764 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58765 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58766 			(void*)&&ZEND_NULL_LABEL,
58767 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58768 			(void*)&&ZEND_NULL_LABEL,
58769 			(void*)&&ZEND_NULL_LABEL,
58770 			(void*)&&ZEND_NULL_LABEL,
58771 			(void*)&&ZEND_NULL_LABEL,
58772 			(void*)&&ZEND_NULL_LABEL,
58773 			(void*)&&ZEND_NULL_LABEL,
58774 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58775 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58776 			(void*)&&ZEND_NULL_LABEL,
58777 			(void*)&&ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58778 			(void*)&&ZEND_NULL_LABEL,
58779 			(void*)&&ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58780 			(void*)&&ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58781 			(void*)&&ZEND_NULL_LABEL,
58782 			(void*)&&ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58783 			(void*)&&ZEND_NULL_LABEL,
58784 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58785 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58786 			(void*)&&ZEND_NULL_LABEL,
58787 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58788 			(void*)&&ZEND_NULL_LABEL,
58789 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58790 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58791 			(void*)&&ZEND_NULL_LABEL,
58792 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58793 			(void*)&&ZEND_NULL_LABEL,
58794 			(void*)&&ZEND_NULL_LABEL,
58795 			(void*)&&ZEND_NULL_LABEL,
58796 			(void*)&&ZEND_NULL_LABEL,
58797 			(void*)&&ZEND_NULL_LABEL,
58798 			(void*)&&ZEND_NULL_LABEL,
58799 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58800 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58801 			(void*)&&ZEND_NULL_LABEL,
58802 			(void*)&&ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58803 			(void*)&&ZEND_NULL_LABEL,
58804 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58805 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58806 			(void*)&&ZEND_NULL_LABEL,
58807 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58808 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
58809 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58810 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58811 			(void*)&&ZEND_NULL_LABEL,
58812 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58813 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
58814 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58815 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58816 			(void*)&&ZEND_NULL_LABEL,
58817 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58818 			(void*)&&ZEND_NULL_LABEL,
58819 			(void*)&&ZEND_NULL_LABEL,
58820 			(void*)&&ZEND_NULL_LABEL,
58821 			(void*)&&ZEND_NULL_LABEL,
58822 			(void*)&&ZEND_NULL_LABEL,
58823 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_LABEL,
58824 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58825 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58826 			(void*)&&ZEND_NULL_LABEL,
58827 			(void*)&&ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58828 			(void*)&&ZEND_NULL_LABEL,
58829 			(void*)&&ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_LABEL,
58830 			(void*)&&ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_LABEL,
58831 			(void*)&&ZEND_NULL_LABEL,
58832 			(void*)&&ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_LABEL,
58833 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_LABEL,
58834 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58835 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58836 			(void*)&&ZEND_NULL_LABEL,
58837 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58838 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_LABEL,
58839 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58840 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58841 			(void*)&&ZEND_NULL_LABEL,
58842 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58843 			(void*)&&ZEND_NULL_LABEL,
58844 			(void*)&&ZEND_NULL_LABEL,
58845 			(void*)&&ZEND_NULL_LABEL,
58846 			(void*)&&ZEND_NULL_LABEL,
58847 			(void*)&&ZEND_NULL_LABEL,
58848 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_LABEL,
58849 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58850 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58851 			(void*)&&ZEND_NULL_LABEL,
58852 			(void*)&&ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58853 			(void*)&&ZEND_NULL_LABEL,
58854 			(void*)&&ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58855 			(void*)&&ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58856 			(void*)&&ZEND_NULL_LABEL,
58857 			(void*)&&ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58858 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
58859 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58860 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58861 			(void*)&&ZEND_NULL_LABEL,
58862 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58863 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
58864 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58865 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58866 			(void*)&&ZEND_NULL_LABEL,
58867 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58868 			(void*)&&ZEND_NULL_LABEL,
58869 			(void*)&&ZEND_NULL_LABEL,
58870 			(void*)&&ZEND_NULL_LABEL,
58871 			(void*)&&ZEND_NULL_LABEL,
58872 			(void*)&&ZEND_NULL_LABEL,
58873 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
58874 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58875 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58876 			(void*)&&ZEND_NULL_LABEL,
58877 			(void*)&&ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58878 			(void*)&&ZEND_NULL_LABEL,
58879 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58880 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58881 			(void*)&&ZEND_NULL_LABEL,
58882 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_LABEL,
58883 			(void*)&&ZEND_NULL_LABEL,
58884 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58885 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58886 			(void*)&&ZEND_NULL_LABEL,
58887 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58888 			(void*)&&ZEND_NULL_LABEL,
58889 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58890 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58891 			(void*)&&ZEND_NULL_LABEL,
58892 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58893 			(void*)&&ZEND_NULL_LABEL,
58894 			(void*)&&ZEND_NULL_LABEL,
58895 			(void*)&&ZEND_NULL_LABEL,
58896 			(void*)&&ZEND_NULL_LABEL,
58897 			(void*)&&ZEND_NULL_LABEL,
58898 			(void*)&&ZEND_NULL_LABEL,
58899 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58900 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58901 			(void*)&&ZEND_NULL_LABEL,
58902 			(void*)&&ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_LABEL,
58903 			(void*)&&ZEND_NULL_LABEL,
58904 			(void*)&&ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_LABEL,
58905 			(void*)&&ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_LABEL,
58906 			(void*)&&ZEND_NULL_LABEL,
58907 			(void*)&&ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_LABEL,
58908 			(void*)&&ZEND_NULL_LABEL,
58909 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58910 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58911 			(void*)&&ZEND_NULL_LABEL,
58912 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58913 			(void*)&&ZEND_NULL_LABEL,
58914 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58915 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58916 			(void*)&&ZEND_NULL_LABEL,
58917 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58918 			(void*)&&ZEND_NULL_LABEL,
58919 			(void*)&&ZEND_NULL_LABEL,
58920 			(void*)&&ZEND_NULL_LABEL,
58921 			(void*)&&ZEND_NULL_LABEL,
58922 			(void*)&&ZEND_NULL_LABEL,
58923 			(void*)&&ZEND_NULL_LABEL,
58924 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58925 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58926 			(void*)&&ZEND_NULL_LABEL,
58927 			(void*)&&ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58928 			(void*)&&ZEND_NULL_LABEL,
58929 			(void*)&&ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58930 			(void*)&&ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58931 			(void*)&&ZEND_NULL_LABEL,
58932 			(void*)&&ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
58933 			(void*)&&ZEND_NULL_LABEL,
58934 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58935 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58936 			(void*)&&ZEND_NULL_LABEL,
58937 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58938 			(void*)&&ZEND_NULL_LABEL,
58939 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58940 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58941 			(void*)&&ZEND_NULL_LABEL,
58942 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58943 			(void*)&&ZEND_NULL_LABEL,
58944 			(void*)&&ZEND_NULL_LABEL,
58945 			(void*)&&ZEND_NULL_LABEL,
58946 			(void*)&&ZEND_NULL_LABEL,
58947 			(void*)&&ZEND_NULL_LABEL,
58948 			(void*)&&ZEND_NULL_LABEL,
58949 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58950 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58951 			(void*)&&ZEND_NULL_LABEL,
58952 			(void*)&&ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
58953 			(void*)&&ZEND_NULL_LABEL,
58954 			(void*)&&ZEND_NULL_LABEL,
58955 			(void*)&&ZEND_NULL_LABEL,
58956 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
58957 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
58958 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
58959 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
58960 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
58961 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
58962 			(void*)&&ZEND_NULL_LABEL,
58963 			(void*)&&ZEND_NULL_LABEL,
58964 			(void*)&&ZEND_NULL_LABEL,
58965 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
58966 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
58967 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
58968 			(void*)&&ZEND_NULL_LABEL,
58969 			(void*)&&ZEND_NULL_LABEL,
58970 			(void*)&&ZEND_NULL_LABEL,
58971 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58972 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
58973 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
58974 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58975 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
58976 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
58977 			(void*)&&ZEND_NULL_LABEL,
58978 			(void*)&&ZEND_NULL_LABEL,
58979 			(void*)&&ZEND_NULL_LABEL,
58980 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58981 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
58982 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
58983 			(void*)&&ZEND_NULL_LABEL,
58984 			(void*)&&ZEND_NULL_LABEL,
58985 			(void*)&&ZEND_NULL_LABEL,
58986 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58987 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
58988 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
58989 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58990 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
58991 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
58992 			(void*)&&ZEND_NULL_LABEL,
58993 			(void*)&&ZEND_NULL_LABEL,
58994 			(void*)&&ZEND_NULL_LABEL,
58995 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
58996 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
58997 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
58998 			(void*)&&ZEND_NULL_LABEL,
58999 			(void*)&&ZEND_NULL_LABEL,
59000 			(void*)&&ZEND_NULL_LABEL,
59001 			(void*)&&ZEND_NULL_LABEL,
59002 			(void*)&&ZEND_NULL_LABEL,
59003 			(void*)&&ZEND_NULL_LABEL,
59004 			(void*)&&ZEND_NULL_LABEL,
59005 			(void*)&&ZEND_NULL_LABEL,
59006 			(void*)&&ZEND_NULL_LABEL,
59007 			(void*)&&ZEND_NULL_LABEL,
59008 			(void*)&&ZEND_NULL_LABEL,
59009 			(void*)&&ZEND_NULL_LABEL,
59010 			(void*)&&ZEND_NULL_LABEL,
59011 			(void*)&&ZEND_NULL_LABEL,
59012 			(void*)&&ZEND_NULL_LABEL,
59013 			(void*)&&ZEND_NULL_LABEL,
59014 			(void*)&&ZEND_NULL_LABEL,
59015 			(void*)&&ZEND_NULL_LABEL,
59016 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59017 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59018 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59019 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59020 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59021 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59022 			(void*)&&ZEND_NULL_LABEL,
59023 			(void*)&&ZEND_NULL_LABEL,
59024 			(void*)&&ZEND_NULL_LABEL,
59025 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59026 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59027 			(void*)&&ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59028 			(void*)&&ZEND_NULL_LABEL,
59029 			(void*)&&ZEND_NULL_LABEL,
59030 			(void*)&&ZEND_NULL_LABEL,
59031 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59032 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59033 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59034 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59035 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59036 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59037 			(void*)&&ZEND_NULL_LABEL,
59038 			(void*)&&ZEND_NULL_LABEL,
59039 			(void*)&&ZEND_NULL_LABEL,
59040 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59041 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59042 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59043 			(void*)&&ZEND_NULL_LABEL,
59044 			(void*)&&ZEND_NULL_LABEL,
59045 			(void*)&&ZEND_NULL_LABEL,
59046 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59047 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59048 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59049 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59050 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59051 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59052 			(void*)&&ZEND_NULL_LABEL,
59053 			(void*)&&ZEND_NULL_LABEL,
59054 			(void*)&&ZEND_NULL_LABEL,
59055 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59056 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59057 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59058 			(void*)&&ZEND_NULL_LABEL,
59059 			(void*)&&ZEND_NULL_LABEL,
59060 			(void*)&&ZEND_NULL_LABEL,
59061 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59062 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59063 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59064 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59065 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59066 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59067 			(void*)&&ZEND_NULL_LABEL,
59068 			(void*)&&ZEND_NULL_LABEL,
59069 			(void*)&&ZEND_NULL_LABEL,
59070 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59071 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59072 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59073 			(void*)&&ZEND_NULL_LABEL,
59074 			(void*)&&ZEND_NULL_LABEL,
59075 			(void*)&&ZEND_NULL_LABEL,
59076 			(void*)&&ZEND_NULL_LABEL,
59077 			(void*)&&ZEND_NULL_LABEL,
59078 			(void*)&&ZEND_NULL_LABEL,
59079 			(void*)&&ZEND_NULL_LABEL,
59080 			(void*)&&ZEND_NULL_LABEL,
59081 			(void*)&&ZEND_NULL_LABEL,
59082 			(void*)&&ZEND_NULL_LABEL,
59083 			(void*)&&ZEND_NULL_LABEL,
59084 			(void*)&&ZEND_NULL_LABEL,
59085 			(void*)&&ZEND_NULL_LABEL,
59086 			(void*)&&ZEND_NULL_LABEL,
59087 			(void*)&&ZEND_NULL_LABEL,
59088 			(void*)&&ZEND_NULL_LABEL,
59089 			(void*)&&ZEND_NULL_LABEL,
59090 			(void*)&&ZEND_NULL_LABEL,
59091 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59092 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59093 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59094 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59095 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59096 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59097 			(void*)&&ZEND_NULL_LABEL,
59098 			(void*)&&ZEND_NULL_LABEL,
59099 			(void*)&&ZEND_NULL_LABEL,
59100 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59101 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59102 			(void*)&&ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59103 			(void*)&&ZEND_NULL_LABEL,
59104 			(void*)&&ZEND_NULL_LABEL,
59105 			(void*)&&ZEND_NULL_LABEL,
59106 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
59107 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59108 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59109 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
59110 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59111 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59112 			(void*)&&ZEND_NULL_LABEL,
59113 			(void*)&&ZEND_NULL_LABEL,
59114 			(void*)&&ZEND_NULL_LABEL,
59115 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
59116 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59117 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59118 			(void*)&&ZEND_NULL_LABEL,
59119 			(void*)&&ZEND_NULL_LABEL,
59120 			(void*)&&ZEND_NULL_LABEL,
59121 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59122 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59123 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59124 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59125 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59126 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59127 			(void*)&&ZEND_NULL_LABEL,
59128 			(void*)&&ZEND_NULL_LABEL,
59129 			(void*)&&ZEND_NULL_LABEL,
59130 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59131 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59132 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59133 			(void*)&&ZEND_NULL_LABEL,
59134 			(void*)&&ZEND_NULL_LABEL,
59135 			(void*)&&ZEND_NULL_LABEL,
59136 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59137 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59138 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59139 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59140 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59141 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59142 			(void*)&&ZEND_NULL_LABEL,
59143 			(void*)&&ZEND_NULL_LABEL,
59144 			(void*)&&ZEND_NULL_LABEL,
59145 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59146 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59147 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59148 			(void*)&&ZEND_NULL_LABEL,
59149 			(void*)&&ZEND_NULL_LABEL,
59150 			(void*)&&ZEND_NULL_LABEL,
59151 			(void*)&&ZEND_NULL_LABEL,
59152 			(void*)&&ZEND_NULL_LABEL,
59153 			(void*)&&ZEND_NULL_LABEL,
59154 			(void*)&&ZEND_NULL_LABEL,
59155 			(void*)&&ZEND_NULL_LABEL,
59156 			(void*)&&ZEND_NULL_LABEL,
59157 			(void*)&&ZEND_NULL_LABEL,
59158 			(void*)&&ZEND_NULL_LABEL,
59159 			(void*)&&ZEND_NULL_LABEL,
59160 			(void*)&&ZEND_NULL_LABEL,
59161 			(void*)&&ZEND_NULL_LABEL,
59162 			(void*)&&ZEND_NULL_LABEL,
59163 			(void*)&&ZEND_NULL_LABEL,
59164 			(void*)&&ZEND_NULL_LABEL,
59165 			(void*)&&ZEND_NULL_LABEL,
59166 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59167 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59168 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59169 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59170 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59171 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59172 			(void*)&&ZEND_NULL_LABEL,
59173 			(void*)&&ZEND_NULL_LABEL,
59174 			(void*)&&ZEND_NULL_LABEL,
59175 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59176 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59177 			(void*)&&ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59178 			(void*)&&ZEND_NULL_LABEL,
59179 			(void*)&&ZEND_NULL_LABEL,
59180 			(void*)&&ZEND_NULL_LABEL,
59181 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59182 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59183 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59184 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59185 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59186 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59187 			(void*)&&ZEND_NULL_LABEL,
59188 			(void*)&&ZEND_NULL_LABEL,
59189 			(void*)&&ZEND_NULL_LABEL,
59190 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59191 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59192 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59193 			(void*)&&ZEND_NULL_LABEL,
59194 			(void*)&&ZEND_NULL_LABEL,
59195 			(void*)&&ZEND_NULL_LABEL,
59196 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59197 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59198 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59199 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59200 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59201 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59202 			(void*)&&ZEND_NULL_LABEL,
59203 			(void*)&&ZEND_NULL_LABEL,
59204 			(void*)&&ZEND_NULL_LABEL,
59205 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59206 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59207 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59208 			(void*)&&ZEND_NULL_LABEL,
59209 			(void*)&&ZEND_NULL_LABEL,
59210 			(void*)&&ZEND_NULL_LABEL,
59211 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59212 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59213 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59214 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59215 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59216 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59217 			(void*)&&ZEND_NULL_LABEL,
59218 			(void*)&&ZEND_NULL_LABEL,
59219 			(void*)&&ZEND_NULL_LABEL,
59220 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59221 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59222 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59223 			(void*)&&ZEND_NULL_LABEL,
59224 			(void*)&&ZEND_NULL_LABEL,
59225 			(void*)&&ZEND_NULL_LABEL,
59226 			(void*)&&ZEND_NULL_LABEL,
59227 			(void*)&&ZEND_NULL_LABEL,
59228 			(void*)&&ZEND_NULL_LABEL,
59229 			(void*)&&ZEND_NULL_LABEL,
59230 			(void*)&&ZEND_NULL_LABEL,
59231 			(void*)&&ZEND_NULL_LABEL,
59232 			(void*)&&ZEND_NULL_LABEL,
59233 			(void*)&&ZEND_NULL_LABEL,
59234 			(void*)&&ZEND_NULL_LABEL,
59235 			(void*)&&ZEND_NULL_LABEL,
59236 			(void*)&&ZEND_NULL_LABEL,
59237 			(void*)&&ZEND_NULL_LABEL,
59238 			(void*)&&ZEND_NULL_LABEL,
59239 			(void*)&&ZEND_NULL_LABEL,
59240 			(void*)&&ZEND_NULL_LABEL,
59241 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59242 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59243 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59244 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59245 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59246 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59247 			(void*)&&ZEND_NULL_LABEL,
59248 			(void*)&&ZEND_NULL_LABEL,
59249 			(void*)&&ZEND_NULL_LABEL,
59250 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59251 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59252 			(void*)&&ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59253 			(void*)&&ZEND_NULL_LABEL,
59254 			(void*)&&ZEND_NULL_LABEL,
59255 			(void*)&&ZEND_NULL_LABEL,
59256 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_LABEL,
59257 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59258 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59259 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_LABEL,
59260 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59261 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59262 			(void*)&&ZEND_NULL_LABEL,
59263 			(void*)&&ZEND_NULL_LABEL,
59264 			(void*)&&ZEND_NULL_LABEL,
59265 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_LABEL,
59266 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59267 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59268 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_LABEL,
59269 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59270 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59271 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59272 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59273 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59274 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59275 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59276 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59277 			(void*)&&ZEND_NULL_LABEL,
59278 			(void*)&&ZEND_NULL_LABEL,
59279 			(void*)&&ZEND_NULL_LABEL,
59280 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59281 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59282 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59283 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_LABEL,
59284 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59285 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59286 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59287 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59288 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59289 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59290 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59291 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59292 			(void*)&&ZEND_NULL_LABEL,
59293 			(void*)&&ZEND_NULL_LABEL,
59294 			(void*)&&ZEND_NULL_LABEL,
59295 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59296 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59297 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59298 			(void*)&&ZEND_NULL_LABEL,
59299 			(void*)&&ZEND_NULL_LABEL,
59300 			(void*)&&ZEND_NULL_LABEL,
59301 			(void*)&&ZEND_NULL_LABEL,
59302 			(void*)&&ZEND_NULL_LABEL,
59303 			(void*)&&ZEND_NULL_LABEL,
59304 			(void*)&&ZEND_NULL_LABEL,
59305 			(void*)&&ZEND_NULL_LABEL,
59306 			(void*)&&ZEND_NULL_LABEL,
59307 			(void*)&&ZEND_NULL_LABEL,
59308 			(void*)&&ZEND_NULL_LABEL,
59309 			(void*)&&ZEND_NULL_LABEL,
59310 			(void*)&&ZEND_NULL_LABEL,
59311 			(void*)&&ZEND_NULL_LABEL,
59312 			(void*)&&ZEND_NULL_LABEL,
59313 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_LABEL,
59314 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59315 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59316 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59317 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59318 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59319 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59320 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59321 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59322 			(void*)&&ZEND_NULL_LABEL,
59323 			(void*)&&ZEND_NULL_LABEL,
59324 			(void*)&&ZEND_NULL_LABEL,
59325 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59326 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59327 			(void*)&&ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59328 			(void*)&&ZEND_NULL_LABEL,
59329 			(void*)&&ZEND_NULL_LABEL,
59330 			(void*)&&ZEND_NULL_LABEL,
59331 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59332 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59333 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59334 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59335 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59336 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59337 			(void*)&&ZEND_NULL_LABEL,
59338 			(void*)&&ZEND_NULL_LABEL,
59339 			(void*)&&ZEND_NULL_LABEL,
59340 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59341 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59342 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59343 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
59344 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59345 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59346 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59347 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59348 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59349 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59350 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59351 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59352 			(void*)&&ZEND_NULL_LABEL,
59353 			(void*)&&ZEND_NULL_LABEL,
59354 			(void*)&&ZEND_NULL_LABEL,
59355 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59356 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59357 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59358 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
59359 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59360 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59361 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59362 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59363 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59364 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59365 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59366 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59367 			(void*)&&ZEND_NULL_LABEL,
59368 			(void*)&&ZEND_NULL_LABEL,
59369 			(void*)&&ZEND_NULL_LABEL,
59370 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59371 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59372 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59373 			(void*)&&ZEND_NULL_LABEL,
59374 			(void*)&&ZEND_NULL_LABEL,
59375 			(void*)&&ZEND_NULL_LABEL,
59376 			(void*)&&ZEND_NULL_LABEL,
59377 			(void*)&&ZEND_NULL_LABEL,
59378 			(void*)&&ZEND_NULL_LABEL,
59379 			(void*)&&ZEND_NULL_LABEL,
59380 			(void*)&&ZEND_NULL_LABEL,
59381 			(void*)&&ZEND_NULL_LABEL,
59382 			(void*)&&ZEND_NULL_LABEL,
59383 			(void*)&&ZEND_NULL_LABEL,
59384 			(void*)&&ZEND_NULL_LABEL,
59385 			(void*)&&ZEND_NULL_LABEL,
59386 			(void*)&&ZEND_NULL_LABEL,
59387 			(void*)&&ZEND_NULL_LABEL,
59388 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
59389 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59390 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59391 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59392 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59393 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59394 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59395 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59396 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59397 			(void*)&&ZEND_NULL_LABEL,
59398 			(void*)&&ZEND_NULL_LABEL,
59399 			(void*)&&ZEND_NULL_LABEL,
59400 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59401 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59402 			(void*)&&ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59403 			(void*)&&ZEND_NULL_LABEL,
59404 			(void*)&&ZEND_NULL_LABEL,
59405 			(void*)&&ZEND_NULL_LABEL,
59406 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
59407 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59408 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59409 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
59410 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59411 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59412 			(void*)&&ZEND_NULL_LABEL,
59413 			(void*)&&ZEND_NULL_LABEL,
59414 			(void*)&&ZEND_NULL_LABEL,
59415 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_LABEL,
59416 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59417 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59418 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
59419 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59420 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59421 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59422 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59423 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59424 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59425 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59426 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59427 			(void*)&&ZEND_NULL_LABEL,
59428 			(void*)&&ZEND_NULL_LABEL,
59429 			(void*)&&ZEND_NULL_LABEL,
59430 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59431 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59432 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59433 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
59434 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59435 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59436 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59437 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59438 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59439 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59440 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59441 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59442 			(void*)&&ZEND_NULL_LABEL,
59443 			(void*)&&ZEND_NULL_LABEL,
59444 			(void*)&&ZEND_NULL_LABEL,
59445 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59446 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59447 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59448 			(void*)&&ZEND_NULL_LABEL,
59449 			(void*)&&ZEND_NULL_LABEL,
59450 			(void*)&&ZEND_NULL_LABEL,
59451 			(void*)&&ZEND_NULL_LABEL,
59452 			(void*)&&ZEND_NULL_LABEL,
59453 			(void*)&&ZEND_NULL_LABEL,
59454 			(void*)&&ZEND_NULL_LABEL,
59455 			(void*)&&ZEND_NULL_LABEL,
59456 			(void*)&&ZEND_NULL_LABEL,
59457 			(void*)&&ZEND_NULL_LABEL,
59458 			(void*)&&ZEND_NULL_LABEL,
59459 			(void*)&&ZEND_NULL_LABEL,
59460 			(void*)&&ZEND_NULL_LABEL,
59461 			(void*)&&ZEND_NULL_LABEL,
59462 			(void*)&&ZEND_NULL_LABEL,
59463 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_LABEL,
59464 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59465 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59466 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59467 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59468 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59469 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59470 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59471 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59472 			(void*)&&ZEND_NULL_LABEL,
59473 			(void*)&&ZEND_NULL_LABEL,
59474 			(void*)&&ZEND_NULL_LABEL,
59475 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_LABEL,
59476 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59477 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59478 			(void*)&&ZEND_NULL_LABEL,
59479 			(void*)&&ZEND_NULL_LABEL,
59480 			(void*)&&ZEND_NULL_LABEL,
59481 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59482 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59483 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59484 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59485 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59486 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59487 			(void*)&&ZEND_NULL_LABEL,
59488 			(void*)&&ZEND_NULL_LABEL,
59489 			(void*)&&ZEND_NULL_LABEL,
59490 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_LABEL,
59491 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_LABEL,
59492 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_LABEL,
59493 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
59494 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59495 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59496 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59497 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59498 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59499 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59500 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59501 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59502 			(void*)&&ZEND_NULL_LABEL,
59503 			(void*)&&ZEND_NULL_LABEL,
59504 			(void*)&&ZEND_NULL_LABEL,
59505 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59506 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59507 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59508 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
59509 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59510 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59511 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59512 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59513 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59514 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59515 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59516 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59517 			(void*)&&ZEND_NULL_LABEL,
59518 			(void*)&&ZEND_NULL_LABEL,
59519 			(void*)&&ZEND_NULL_LABEL,
59520 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59521 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59522 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59523 			(void*)&&ZEND_NULL_LABEL,
59524 			(void*)&&ZEND_NULL_LABEL,
59525 			(void*)&&ZEND_NULL_LABEL,
59526 			(void*)&&ZEND_NULL_LABEL,
59527 			(void*)&&ZEND_NULL_LABEL,
59528 			(void*)&&ZEND_NULL_LABEL,
59529 			(void*)&&ZEND_NULL_LABEL,
59530 			(void*)&&ZEND_NULL_LABEL,
59531 			(void*)&&ZEND_NULL_LABEL,
59532 			(void*)&&ZEND_NULL_LABEL,
59533 			(void*)&&ZEND_NULL_LABEL,
59534 			(void*)&&ZEND_NULL_LABEL,
59535 			(void*)&&ZEND_NULL_LABEL,
59536 			(void*)&&ZEND_NULL_LABEL,
59537 			(void*)&&ZEND_NULL_LABEL,
59538 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_LABEL,
59539 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_LABEL,
59540 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_LABEL,
59541 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59542 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59543 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59544 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59545 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59546 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59547 			(void*)&&ZEND_NULL_LABEL,
59548 			(void*)&&ZEND_NULL_LABEL,
59549 			(void*)&&ZEND_NULL_LABEL,
59550 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_LABEL,
59551 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_LABEL,
59552 			(void*)&&ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_LABEL,
59553 			(void*)&&ZEND_NULL_LABEL,
59554 			(void*)&&ZEND_NULL_LABEL,
59555 			(void*)&&ZEND_NULL_LABEL,
59556 			(void*)&&ZEND_NULL_LABEL,
59557 			(void*)&&ZEND_NULL_LABEL,
59558 			(void*)&&ZEND_NULL_LABEL,
59559 			(void*)&&ZEND_NULL_LABEL,
59560 			(void*)&&ZEND_NULL_LABEL,
59561 			(void*)&&ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_LABEL,
59562 			(void*)&&ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_LABEL,
59563 			(void*)&&ZEND_NULL_LABEL,
59564 			(void*)&&ZEND_NULL_LABEL,
59565 			(void*)&&ZEND_NULL_LABEL,
59566 			(void*)&&ZEND_NULL_LABEL,
59567 			(void*)&&ZEND_NULL_LABEL,
59568 			(void*)&&ZEND_NULL_LABEL,
59569 			(void*)&&ZEND_NULL_LABEL,
59570 			(void*)&&ZEND_NULL_LABEL,
59571 			(void*)&&ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_LABEL,
59572 			(void*)&&ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_LABEL,
59573 			(void*)&&ZEND_NULL_LABEL,
59574 			(void*)&&ZEND_NULL_LABEL,
59575 			(void*)&&ZEND_NULL_LABEL,
59576 			(void*)&&ZEND_NULL_LABEL,
59577 			(void*)&&ZEND_NULL_LABEL,
59578 			(void*)&&ZEND_NULL_LABEL,
59579 			(void*)&&ZEND_NULL_LABEL,
59580 			(void*)&&ZEND_NULL_LABEL,
59581 			(void*)&&ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_LABEL,
59582 			(void*)&&ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_LABEL,
59583 			(void*)&&ZEND_NULL_LABEL,
59584 			(void*)&&ZEND_NULL_LABEL,
59585 			(void*)&&ZEND_NULL_LABEL,
59586 			(void*)&&ZEND_NULL_LABEL,
59587 			(void*)&&ZEND_NULL_LABEL,
59588 			(void*)&&ZEND_NULL_LABEL,
59589 			(void*)&&ZEND_NULL_LABEL,
59590 			(void*)&&ZEND_NULL_LABEL,
59591 			(void*)&&ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_LABEL,
59592 			(void*)&&ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_LABEL,
59593 			(void*)&&ZEND_NULL_LABEL,
59594 			(void*)&&ZEND_NULL_LABEL,
59595 			(void*)&&ZEND_NULL_LABEL,
59596 			(void*)&&ZEND_NULL_LABEL,
59597 			(void*)&&ZEND_NULL_LABEL,
59598 			(void*)&&ZEND_NULL_LABEL,
59599 			(void*)&&ZEND_NULL_LABEL,
59600 			(void*)&&ZEND_NULL_LABEL,
59601 			(void*)&&ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_LABEL,
59602 			(void*)&&ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_LABEL,
59603 			(void*)&&ZEND_NULL_LABEL,
59604 			(void*)&&ZEND_NULL_LABEL,
59605 			(void*)&&ZEND_NULL_LABEL,
59606 			(void*)&&ZEND_NULL_LABEL,
59607 			(void*)&&ZEND_NULL_LABEL,
59608 			(void*)&&ZEND_NULL_LABEL,
59609 			(void*)&&ZEND_NULL_LABEL,
59610 			(void*)&&ZEND_NULL_LABEL,
59611 			(void*)&&ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_LABEL,
59612 			(void*)&&ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_LABEL,
59613 			(void*)&&ZEND_NULL_LABEL,
59614 			(void*)&&ZEND_NULL_LABEL,
59615 			(void*)&&ZEND_NULL_LABEL,
59616 			(void*)&&ZEND_NULL_LABEL,
59617 			(void*)&&ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_LABEL,
59618 			(void*)&&ZEND_NULL_LABEL,
59619 			(void*)&&ZEND_NULL_LABEL,
59620 			(void*)&&ZEND_NULL_LABEL,
59621 			(void*)&&ZEND_NULL_LABEL,
59622 			(void*)&&ZEND_POST_INC_LONG_SPEC_CV_LABEL,
59623 			(void*)&&ZEND_NULL_LABEL,
59624 			(void*)&&ZEND_NULL_LABEL,
59625 			(void*)&&ZEND_NULL_LABEL,
59626 			(void*)&&ZEND_NULL_LABEL,
59627 			(void*)&&ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_LABEL,
59628 			(void*)&&ZEND_NULL_LABEL,
59629 			(void*)&&ZEND_NULL_LABEL,
59630 			(void*)&&ZEND_NULL_LABEL,
59631 			(void*)&&ZEND_NULL_LABEL,
59632 			(void*)&&ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_LABEL,
59633 			(void*)&&ZEND_NULL_LABEL,
59634 			(void*)&&ZEND_NULL_LABEL,
59635 			(void*)&&ZEND_NULL_LABEL,
59636 			(void*)&&ZEND_NULL_LABEL,
59637 			(void*)&&ZEND_POST_DEC_LONG_SPEC_CV_LABEL,
59638 			(void*)&&ZEND_NULL_LABEL,
59639 			(void*)&&ZEND_NULL_LABEL,
59640 			(void*)&&ZEND_NULL_LABEL,
59641 			(void*)&&ZEND_NULL_LABEL,
59642 			(void*)&&ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_LABEL,
59643 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_LABEL,
59644 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_LABEL,
59645 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_LABEL,
59646 			(void*)&&ZEND_NULL_LABEL,
59647 			(void*)&&ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_LABEL,
59648 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_CONST_LABEL,
59649 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_LABEL,
59650 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_LABEL,
59651 			(void*)&&ZEND_NULL_LABEL,
59652 			(void*)&&ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_LABEL,
59653 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CONST_LABEL,
59654 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVAR_LABEL,
59655 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVAR_LABEL,
59656 			(void*)&&ZEND_NULL_LABEL,
59657 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CV_LABEL,
59658 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_LABEL,
59659 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_LABEL,
59660 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_LABEL,
59661 			(void*)&&ZEND_NULL_LABEL,
59662 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CV_LABEL,
59663 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_LABEL,
59664 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_LABEL,
59665 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_LABEL,
59666 			(void*)&&ZEND_NULL_LABEL,
59667 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CV_LABEL,
59668 			(void*)&&ZEND_NULL_LABEL,
59669 			(void*)&&ZEND_NULL_LABEL,
59670 			(void*)&&ZEND_NULL_LABEL,
59671 			(void*)&&ZEND_NULL_LABEL,
59672 			(void*)&&ZEND_NULL_LABEL,
59673 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_LABEL,
59674 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVAR_LABEL,
59675 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVAR_LABEL,
59676 			(void*)&&ZEND_NULL_LABEL,
59677 			(void*)&&ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CV_LABEL,
59678 			(void*)&&ZEND_NULL_LABEL,
59679 			(void*)&&ZEND_NULL_LABEL,
59680 			(void*)&&ZEND_SEND_VAR_SIMPLE_SPEC_VAR_LABEL,
59681 			(void*)&&ZEND_NULL_LABEL,
59682 			(void*)&&ZEND_SEND_VAR_SIMPLE_SPEC_CV_LABEL,
59683 			(void*)&&ZEND_NULL_LABEL,
59684 			(void*)&&ZEND_NULL_LABEL,
59685 			(void*)&&ZEND_NULL_LABEL,
59686 			(void*)&&ZEND_NULL_LABEL,
59687 			(void*)&&ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_LABEL,
59688 			(void*)&&ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_QUICK_LABEL,
59689 			(void*)&&ZEND_NULL_LABEL,
59690 			(void*)&&ZEND_NULL_LABEL,
59691 			(void*)&&ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_LABEL,
59692 			(void*)&&ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_QUICK_LABEL,
59693 			(void*)&&ZEND_NULL_LABEL,
59694 			(void*)&&ZEND_NULL_LABEL,
59695 			(void*)&&ZEND_NULL_LABEL,
59696 			(void*)&&ZEND_NULL_LABEL,
59697 			(void*)&&ZEND_NULL_LABEL,
59698 			(void*)&&ZEND_NULL_LABEL,
59699 			(void*)&&ZEND_NULL_LABEL,
59700 			(void*)&&ZEND_NULL_LABEL,
59701 			(void*)&&ZEND_NULL_LABEL,
59702 			(void*)&&ZEND_NULL_LABEL,
59703 			(void*)&&ZEND_NULL_LABEL,
59704 			(void*)&&ZEND_NULL_LABEL,
59705 			(void*)&&ZEND_NULL_LABEL,
59706 			(void*)&&ZEND_NULL_LABEL,
59707 			(void*)&&ZEND_NULL_LABEL,
59708 			(void*)&&ZEND_NULL_LABEL,
59709 			(void*)&&ZEND_NULL_LABEL,
59710 			(void*)&&ZEND_NULL_LABEL,
59711 			(void*)&&ZEND_NULL_LABEL,
59712 			(void*)&&ZEND_NULL_LABEL,
59713 			(void*)&&ZEND_NULL_LABEL,
59714 			(void*)&&ZEND_NULL_LABEL,
59715 			(void*)&&ZEND_NULL_LABEL,
59716 			(void*)&&ZEND_NULL_LABEL,
59717 			(void*)&&ZEND_NULL_LABEL,
59718 			(void*)&&ZEND_NULL_LABEL,
59719 			(void*)&&ZEND_NULL_LABEL,
59720 			(void*)&&ZEND_NULL_LABEL,
59721 			(void*)&&ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_LABEL,
59722 			(void*)&&ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_LABEL,
59723 			(void*)&&ZEND_NULL_LABEL,
59724 			(void*)&&ZEND_NULL_LABEL,
59725 			(void*)&&ZEND_NULL_LABEL,
59726 			(void*)&&ZEND_NULL_LABEL,
59727 			(void*)&&ZEND_NULL_LABEL,
59728 			(void*)&&ZEND_NULL_LABEL,
59729 			(void*)&&ZEND_NULL_LABEL,
59730 			(void*)&&ZEND_NULL_LABEL,
59731 			(void*)&&ZEND_NULL_LABEL,
59732 			(void*)&&ZEND_NULL_LABEL,
59733 			(void*)&&ZEND_NULL_LABEL,
59734 			(void*)&&ZEND_NULL_LABEL,
59735 			(void*)&&ZEND_NULL_LABEL,
59736 			(void*)&&ZEND_NULL_LABEL,
59737 			(void*)&&ZEND_NULL_LABEL,
59738 			(void*)&&ZEND_NULL_LABEL,
59739 			(void*)&&ZEND_NULL_LABEL,
59740 			(void*)&&ZEND_NULL_LABEL,
59741 			(void*)&&ZEND_NULL_LABEL,
59742 			(void*)&&ZEND_NULL_LABEL,
59743 			(void*)&&ZEND_NULL_LABEL
59744 		};
59745 		zend_opcode_handlers = (const void **) labels;
59746 		zend_handlers_count = sizeof(labels) / sizeof(void*);
59747 		memset(&hybrid_halt_op, 0, sizeof(hybrid_halt_op));
59748 		hybrid_halt_op.handler = (void*)&&HYBRID_HALT_LABEL;
59749 		goto HYBRID_HALT_LABEL;
59750 	}
59751 #endif
59752 
59753 	LOAD_OPLINE();
59754 	ZEND_VM_LOOP_INTERRUPT_CHECK();
59755 
59756 	while (1) {
59757 #if !defined(ZEND_VM_FP_GLOBAL_REG) || !defined(ZEND_VM_IP_GLOBAL_REG)
59758 			int ret;
59759 #endif
59760 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
59761 		HYBRID_SWITCH() {
59762 #else
59763 #if defined(ZEND_VM_FP_GLOBAL_REG) && defined(ZEND_VM_IP_GLOBAL_REG)
59764 		((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59765 		if (UNEXPECTED(!OPLINE)) {
59766 #else
59767 		if (UNEXPECTED((ret = ((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU)) != 0)) {
59768 #endif
59769 #endif
59770 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
59771 			HYBRID_CASE(ZEND_JMP_SPEC):
59772 				ZEND_JMP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59773 				HYBRID_BREAK();
59774 			HYBRID_CASE(ZEND_DO_ICALL_SPEC_RETVAL_UNUSED):
59775 				ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59776 				HYBRID_BREAK();
59777 			HYBRID_CASE(ZEND_DO_ICALL_SPEC_RETVAL_USED):
59778 				ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59779 				HYBRID_BREAK();
59780 			HYBRID_CASE(ZEND_DO_UCALL_SPEC_RETVAL_UNUSED):
59781 				ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59782 				HYBRID_BREAK();
59783 			HYBRID_CASE(ZEND_DO_UCALL_SPEC_RETVAL_USED):
59784 				ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59785 				HYBRID_BREAK();
59786 			HYBRID_CASE(ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED):
59787 				ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59788 				HYBRID_BREAK();
59789 			HYBRID_CASE(ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED):
59790 				ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59791 				HYBRID_BREAK();
59792 			HYBRID_CASE(ZEND_DO_FCALL_SPEC_RETVAL_UNUSED):
59793 				ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59794 				HYBRID_BREAK();
59795 			HYBRID_CASE(ZEND_DO_FCALL_SPEC_RETVAL_USED):
59796 				ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59797 				HYBRID_BREAK();
59798 			HYBRID_CASE(ZEND_GENERATOR_CREATE_SPEC):
59799 				ZEND_GENERATOR_CREATE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59800 				HYBRID_BREAK();
59801 			HYBRID_CASE(ZEND_SEND_UNPACK_SPEC):
59802 				ZEND_SEND_UNPACK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59803 				HYBRID_BREAK();
59804 			HYBRID_CASE(ZEND_SEND_ARRAY_SPEC):
59805 				ZEND_SEND_ARRAY_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59806 				HYBRID_BREAK();
59807 			HYBRID_CASE(ZEND_RECV_SPEC):
59808 				ZEND_RECV_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59809 				HYBRID_BREAK();
59810 			HYBRID_CASE(ZEND_RECV_VARIADIC_SPEC):
59811 				ZEND_RECV_VARIADIC_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59812 				HYBRID_BREAK();
59813 			HYBRID_CASE(ZEND_BEGIN_SILENCE_SPEC):
59814 				ZEND_BEGIN_SILENCE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59815 				HYBRID_BREAK();
59816 			HYBRID_CASE(ZEND_EXT_STMT_SPEC):
59817 				ZEND_EXT_STMT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59818 				HYBRID_BREAK();
59819 			HYBRID_CASE(ZEND_EXT_FCALL_BEGIN_SPEC):
59820 				ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59821 				HYBRID_BREAK();
59822 			HYBRID_CASE(ZEND_EXT_FCALL_END_SPEC):
59823 				ZEND_EXT_FCALL_END_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59824 				HYBRID_BREAK();
59825 			HYBRID_CASE(ZEND_DECLARE_CLASS_SPEC):
59826 				ZEND_DECLARE_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59827 				HYBRID_BREAK();
59828 			HYBRID_CASE(ZEND_DECLARE_ANON_CLASS_SPEC):
59829 				ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59830 				HYBRID_BREAK();
59831 			HYBRID_CASE(ZEND_DECLARE_FUNCTION_SPEC):
59832 				ZEND_DECLARE_FUNCTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59833 				HYBRID_BREAK();
59834 			HYBRID_CASE(ZEND_TICKS_SPEC):
59835 				ZEND_TICKS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59836 				HYBRID_BREAK();
59837 			HYBRID_CASE(ZEND_EXT_NOP_SPEC):
59838 				ZEND_EXT_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59839 				HYBRID_BREAK();
59840 			HYBRID_CASE(ZEND_NOP_SPEC):
59841 				ZEND_NOP_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59842 				HYBRID_BREAK();
59843 			HYBRID_CASE(ZEND_ADD_TRAIT_SPEC):
59844 				ZEND_ADD_TRAIT_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59845 				HYBRID_BREAK();
59846 			HYBRID_CASE(ZEND_BIND_TRAITS_SPEC):
59847 				ZEND_BIND_TRAITS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59848 				HYBRID_BREAK();
59849 			HYBRID_CASE(ZEND_HANDLE_EXCEPTION_SPEC):
59850 				ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59851 				HYBRID_BREAK();
59852 			HYBRID_CASE(ZEND_VERIFY_ABSTRACT_CLASS_SPEC):
59853 				ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59854 				HYBRID_BREAK();
59855 			HYBRID_CASE(ZEND_USER_OPCODE_SPEC):
59856 				ZEND_USER_OPCODE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59857 				HYBRID_BREAK();
59858 			HYBRID_CASE(ZEND_DISCARD_EXCEPTION_SPEC):
59859 				ZEND_DISCARD_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59860 				HYBRID_BREAK();
59861 			HYBRID_CASE(ZEND_FAST_CALL_SPEC):
59862 				ZEND_FAST_CALL_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59863 				HYBRID_BREAK();
59864 			HYBRID_CASE(ZEND_FAST_RET_SPEC):
59865 				ZEND_FAST_RET_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59866 				HYBRID_BREAK();
59867 			HYBRID_CASE(ZEND_ASSERT_CHECK_SPEC):
59868 				ZEND_ASSERT_CHECK_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59869 				HYBRID_BREAK();
59870 			HYBRID_CASE(ZEND_FETCH_CLASS_NAME_SPEC):
59871 				ZEND_FETCH_CLASS_NAME_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59872 				HYBRID_BREAK();
59873 			HYBRID_CASE(ZEND_CALL_TRAMPOLINE_SPEC):
59874 				ZEND_CALL_TRAMPOLINE_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59875 				HYBRID_BREAK();
59876 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_CONST):
59877 				ZEND_FETCH_CLASS_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59878 				HYBRID_BREAK();
59879 			HYBRID_CASE(ZEND_INIT_FCALL_BY_NAME_SPEC_CONST):
59880 				ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59881 				HYBRID_BREAK();
59882 			HYBRID_CASE(ZEND_INIT_DYNAMIC_CALL_SPEC_CONST):
59883 				ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59884 				HYBRID_BREAK();
59885 			HYBRID_CASE(ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST):
59886 				ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59887 				HYBRID_BREAK();
59888 			HYBRID_CASE(ZEND_INIT_FCALL_SPEC_CONST):
59889 				ZEND_INIT_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59890 				HYBRID_BREAK();
59891 			HYBRID_CASE(ZEND_RECV_INIT_SPEC_CONST):
59892 				ZEND_RECV_INIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59893 				HYBRID_BREAK();
59894 			HYBRID_CASE(ZEND_ADD_INTERFACE_SPEC_CONST):
59895 				ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59896 				HYBRID_BREAK();
59897 			HYBRID_CASE(ZEND_DECLARE_INHERITED_CLASS_SPEC_VAR):
59898 				ZEND_DECLARE_INHERITED_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59899 				HYBRID_BREAK();
59900 			HYBRID_CASE(ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_VAR):
59901 				ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59902 				HYBRID_BREAK();
59903 			HYBRID_CASE(ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_VAR):
59904 				ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59905 				HYBRID_BREAK();
59906 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_UNUSED):
59907 				ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59908 				HYBRID_BREAK();
59909 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_CV):
59910 				ZEND_FETCH_CLASS_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59911 				HYBRID_BREAK();
59912 			HYBRID_CASE(ZEND_INIT_DYNAMIC_CALL_SPEC_CV):
59913 				ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59914 				HYBRID_BREAK();
59915 			HYBRID_CASE(ZEND_FETCH_CLASS_SPEC_TMPVAR):
59916 				ZEND_FETCH_CLASS_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59917 				HYBRID_BREAK();
59918 			HYBRID_CASE(ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR):
59919 				ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59920 				HYBRID_BREAK();
59921 			HYBRID_CASE(ZEND_BW_NOT_SPEC_CONST):
59922 				ZEND_BW_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59923 				HYBRID_BREAK();
59924 			HYBRID_CASE(ZEND_BOOL_NOT_SPEC_CONST):
59925 				ZEND_BOOL_NOT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59926 				HYBRID_BREAK();
59927 			HYBRID_CASE(ZEND_ECHO_SPEC_CONST):
59928 				ZEND_ECHO_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59929 				HYBRID_BREAK();
59930 			HYBRID_CASE(ZEND_JMPZ_SPEC_CONST):
59931 				ZEND_JMPZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59932 				HYBRID_BREAK();
59933 			HYBRID_CASE(ZEND_JMPNZ_SPEC_CONST):
59934 				ZEND_JMPNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59935 				HYBRID_BREAK();
59936 			HYBRID_CASE(ZEND_JMPZNZ_SPEC_CONST):
59937 				ZEND_JMPZNZ_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59938 				HYBRID_BREAK();
59939 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_CONST):
59940 				ZEND_JMPZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59941 				HYBRID_BREAK();
59942 			HYBRID_CASE(ZEND_JMPNZ_EX_SPEC_CONST):
59943 				ZEND_JMPNZ_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59944 				HYBRID_BREAK();
59945 			HYBRID_CASE(ZEND_RETURN_SPEC_CONST):
59946 				ZEND_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59947 				HYBRID_BREAK();
59948 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_CONST):
59949 				ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59950 				HYBRID_BREAK();
59951 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_CONST):
59952 				ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59953 				HYBRID_BREAK();
59954 			HYBRID_CASE(ZEND_THROW_SPEC_CONST):
59955 				ZEND_THROW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59956 				HYBRID_BREAK();
59957 			HYBRID_CASE(ZEND_SEND_VAL_SPEC_CONST):
59958 				ZEND_SEND_VAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59959 				HYBRID_BREAK();
59960 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_CONST):
59961 				ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59962 				HYBRID_BREAK();
59963 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_CONST_QUICK):
59964 				ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59965 				HYBRID_BREAK();
59966 			HYBRID_CASE(ZEND_SEND_USER_SPEC_CONST):
59967 				ZEND_SEND_USER_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59968 				HYBRID_BREAK();
59969 			HYBRID_CASE(ZEND_BOOL_SPEC_CONST):
59970 				ZEND_BOOL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59971 				HYBRID_BREAK();
59972 			HYBRID_CASE(ZEND_NEW_SPEC_CONST):
59973 				ZEND_NEW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59974 				HYBRID_BREAK();
59975 			HYBRID_CASE(ZEND_CLONE_SPEC_CONST):
59976 				ZEND_CLONE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59977 				HYBRID_BREAK();
59978 			HYBRID_CASE(ZEND_CAST_SPEC_CONST):
59979 				ZEND_CAST_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59980 				HYBRID_BREAK();
59981 			HYBRID_CASE(ZEND_INCLUDE_OR_EVAL_SPEC_CONST):
59982 				ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59983 				HYBRID_BREAK();
59984 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_CONST):
59985 				ZEND_FE_RESET_R_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59986 				HYBRID_BREAK();
59987 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_CONST):
59988 				ZEND_FE_RESET_RW_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59989 				HYBRID_BREAK();
59990 			HYBRID_CASE(ZEND_EXIT_SPEC_CONST):
59991 				ZEND_EXIT_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59992 				HYBRID_BREAK();
59993 			HYBRID_CASE(ZEND_JMP_SET_SPEC_CONST):
59994 				ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59995 				HYBRID_BREAK();
59996 			HYBRID_CASE(ZEND_COALESCE_SPEC_CONST):
59997 				ZEND_COALESCE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
59998 				HYBRID_BREAK();
59999 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_CONST):
60000 				ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60001 				HYBRID_BREAK();
60002 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_CONST):
60003 				ZEND_YIELD_FROM_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60004 				HYBRID_BREAK();
60005 			HYBRID_CASE(ZEND_STRLEN_SPEC_CONST):
60006 				ZEND_STRLEN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60007 				HYBRID_BREAK();
60008 			HYBRID_CASE(ZEND_TYPE_CHECK_SPEC_CONST):
60009 				ZEND_TYPE_CHECK_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60010 				HYBRID_BREAK();
60011 			HYBRID_CASE(ZEND_DEFINED_SPEC_CONST):
60012 				ZEND_DEFINED_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60013 				HYBRID_BREAK();
60014 			HYBRID_CASE(ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST):
60015 				ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60016 				HYBRID_BREAK();
60017 			HYBRID_CASE(ZEND_QM_ASSIGN_NOREF_SPEC_CONST):
60018 				ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60019 				HYBRID_BREAK();
60020 			HYBRID_CASE(ZEND_ADD_SPEC_CONST_CONST):
60021 				ZEND_ADD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60022 				HYBRID_BREAK();
60023 			HYBRID_CASE(ZEND_SUB_SPEC_CONST_CONST):
60024 				ZEND_SUB_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60025 				HYBRID_BREAK();
60026 			HYBRID_CASE(ZEND_MUL_SPEC_CONST_CONST):
60027 				ZEND_MUL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60028 				HYBRID_BREAK();
60029 			HYBRID_CASE(ZEND_DIV_SPEC_CONST_CONST):
60030 				ZEND_DIV_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60031 				HYBRID_BREAK();
60032 			HYBRID_CASE(ZEND_MOD_SPEC_CONST_CONST):
60033 				ZEND_MOD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60034 				HYBRID_BREAK();
60035 			HYBRID_CASE(ZEND_SL_SPEC_CONST_CONST):
60036 				ZEND_SL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60037 				HYBRID_BREAK();
60038 			HYBRID_CASE(ZEND_SR_SPEC_CONST_CONST):
60039 				ZEND_SR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60040 				HYBRID_BREAK();
60041 			HYBRID_CASE(ZEND_POW_SPEC_CONST_CONST):
60042 				ZEND_POW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60043 				HYBRID_BREAK();
60044 			HYBRID_CASE(ZEND_CONCAT_SPEC_CONST_CONST):
60045 				ZEND_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60046 				HYBRID_BREAK();
60047 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CONST_CONST):
60048 				ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60049 				HYBRID_BREAK();
60050 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST):
60051 				ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60052 				HYBRID_BREAK();
60053 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CONST_CONST):
60054 				ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60055 				HYBRID_BREAK();
60056 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST):
60057 				ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60058 				HYBRID_BREAK();
60059 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CONST_CONST):
60060 				ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60061 				HYBRID_BREAK();
60062 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST):
60063 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60064 				HYBRID_BREAK();
60065 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CONST_CONST):
60066 				ZEND_SPACESHIP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60067 				HYBRID_BREAK();
60068 			HYBRID_CASE(ZEND_BW_OR_SPEC_CONST_CONST):
60069 				ZEND_BW_OR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60070 				HYBRID_BREAK();
60071 			HYBRID_CASE(ZEND_BW_AND_SPEC_CONST_CONST):
60072 				ZEND_BW_AND_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60073 				HYBRID_BREAK();
60074 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CONST_CONST):
60075 				ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60076 				HYBRID_BREAK();
60077 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CONST_CONST):
60078 				ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60079 				HYBRID_BREAK();
60080 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST):
60081 				ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60082 				HYBRID_BREAK();
60083 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST):
60084 				ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60085 				HYBRID_BREAK();
60086 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST):
60087 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60088 				HYBRID_BREAK();
60089 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST):
60090 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60091 				HYBRID_BREAK();
60092 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST):
60093 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60094 				HYBRID_BREAK();
60095 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST):
60096 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60097 				HYBRID_BREAK();
60098 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CONST_CONST):
60099 				ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60100 				HYBRID_BREAK();
60101 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CONST_CONST):
60102 				ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60103 				HYBRID_BREAK();
60104 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST):
60105 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60106 				HYBRID_BREAK();
60107 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CONST_CONST):
60108 				ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60109 				HYBRID_BREAK();
60110 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST):
60111 				ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60112 				HYBRID_BREAK();
60113 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST):
60114 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60115 				HYBRID_BREAK();
60116 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_CONST_CONST):
60117 				ZEND_FETCH_LIST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60118 				HYBRID_BREAK();
60119 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CONST_CONST):
60120 				ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60121 				HYBRID_BREAK();
60122 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST):
60123 				ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60124 				HYBRID_BREAK();
60125 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST):
60126 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60127 				HYBRID_BREAK();
60128 			HYBRID_CASE(ZEND_INIT_USER_CALL_SPEC_CONST_CONST):
60129 				ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60130 				HYBRID_BREAK();
60131 			HYBRID_CASE(ZEND_CASE_SPEC_CONST_CONST):
60132 				ZEND_CASE_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60133 				HYBRID_BREAK();
60134 			HYBRID_CASE(ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST):
60135 				ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60136 				HYBRID_BREAK();
60137 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST):
60138 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60139 				HYBRID_BREAK();
60140 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_CONST):
60141 				ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60142 				HYBRID_BREAK();
60143 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST):
60144 				ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60145 				HYBRID_BREAK();
60146 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST):
60147 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60148 				HYBRID_BREAK();
60149 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST):
60150 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60151 				HYBRID_BREAK();
60152 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST):
60153 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60154 				HYBRID_BREAK();
60155 			HYBRID_CASE(ZEND_DECLARE_CONST_SPEC_CONST_CONST):
60156 				ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60157 				HYBRID_BREAK();
60158 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_CONST):
60159 				ZEND_YIELD_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60160 				HYBRID_BREAK();
60161 			HYBRID_CASE(ZEND_SWITCH_LONG_SPEC_CONST_CONST):
60162 				ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60163 				HYBRID_BREAK();
60164 			HYBRID_CASE(ZEND_SWITCH_STRING_SPEC_CONST_CONST):
60165 				ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60166 				HYBRID_BREAK();
60167 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_CONST_CONST):
60168 				ZEND_IN_ARRAY_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60169 				HYBRID_BREAK();
60170 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CONST):
60171 				ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60172 				HYBRID_BREAK();
60173 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CONST_TMP):
60174 				ZEND_IS_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60175 				HYBRID_BREAK();
60176 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP):
60177 				ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60178 				HYBRID_BREAK();
60179 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_TMP):
60180 				ZEND_YIELD_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60181 				HYBRID_BREAK();
60182 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CONST_VAR):
60183 				ZEND_IS_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60184 				HYBRID_BREAK();
60185 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR):
60186 				ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60187 				HYBRID_BREAK();
60188 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR):
60189 				ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60190 				HYBRID_BREAK();
60191 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR):
60192 				ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60193 				HYBRID_BREAK();
60194 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR):
60195 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60196 				HYBRID_BREAK();
60197 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR):
60198 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60199 				HYBRID_BREAK();
60200 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR):
60201 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60202 				HYBRID_BREAK();
60203 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR):
60204 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60205 				HYBRID_BREAK();
60206 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR):
60207 				ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60208 				HYBRID_BREAK();
60209 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR):
60210 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60211 				HYBRID_BREAK();
60212 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_VAR):
60213 				ZEND_YIELD_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60214 				HYBRID_BREAK();
60215 			HYBRID_CASE(ZEND_FETCH_R_SPEC_CONST_UNUSED):
60216 				ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60217 				HYBRID_BREAK();
60218 			HYBRID_CASE(ZEND_FETCH_W_SPEC_CONST_UNUSED):
60219 				ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60220 				HYBRID_BREAK();
60221 			HYBRID_CASE(ZEND_FETCH_RW_SPEC_CONST_UNUSED):
60222 				ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60223 				HYBRID_BREAK();
60224 			HYBRID_CASE(ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED):
60225 				ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60226 				HYBRID_BREAK();
60227 			HYBRID_CASE(ZEND_FETCH_UNSET_SPEC_CONST_UNUSED):
60228 				ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60229 				HYBRID_BREAK();
60230 			HYBRID_CASE(ZEND_FETCH_IS_SPEC_CONST_UNUSED):
60231 				ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60232 				HYBRID_BREAK();
60233 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED):
60234 				ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60235 				HYBRID_BREAK();
60236 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED):
60237 				ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60238 				HYBRID_BREAK();
60239 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED):
60240 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60241 				HYBRID_BREAK();
60242 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED):
60243 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60244 				HYBRID_BREAK();
60245 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED):
60246 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60247 				HYBRID_BREAK();
60248 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED):
60249 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60250 				HYBRID_BREAK();
60251 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED):
60252 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60253 				HYBRID_BREAK();
60254 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED):
60255 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60256 				HYBRID_BREAK();
60257 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED):
60258 				ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60259 				HYBRID_BREAK();
60260 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED):
60261 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60262 				HYBRID_BREAK();
60263 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_UNUSED):
60264 				ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60265 				HYBRID_BREAK();
60266 			HYBRID_CASE(ZEND_UNSET_VAR_SPEC_CONST_UNUSED):
60267 				ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60268 				HYBRID_BREAK();
60269 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED):
60270 				ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60271 				HYBRID_BREAK();
60272 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED):
60273 				ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60274 				HYBRID_BREAK();
60275 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED):
60276 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60277 				HYBRID_BREAK();
60278 			HYBRID_CASE(ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED):
60279 				ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60280 				HYBRID_BREAK();
60281 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_UNUSED):
60282 				ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60283 				HYBRID_BREAK();
60284 			HYBRID_CASE(ZEND_COUNT_SPEC_CONST_UNUSED):
60285 				ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60286 				HYBRID_BREAK();
60287 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_CONST_UNUSED):
60288 				ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60289 				HYBRID_BREAK();
60290 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_CONST_UNUSED):
60291 				ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60292 				HYBRID_BREAK();
60293 			HYBRID_CASE(ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED):
60294 				ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60295 				HYBRID_BREAK();
60296 			HYBRID_CASE(ZEND_ADD_SPEC_CONST_CV):
60297 				ZEND_ADD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60298 				HYBRID_BREAK();
60299 			HYBRID_CASE(ZEND_SUB_SPEC_CONST_CV):
60300 				ZEND_SUB_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60301 				HYBRID_BREAK();
60302 			HYBRID_CASE(ZEND_MUL_SPEC_CONST_CV):
60303 				ZEND_MUL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60304 				HYBRID_BREAK();
60305 			HYBRID_CASE(ZEND_DIV_SPEC_CONST_CV):
60306 				ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60307 				HYBRID_BREAK();
60308 			HYBRID_CASE(ZEND_MOD_SPEC_CONST_CV):
60309 				ZEND_MOD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60310 				HYBRID_BREAK();
60311 			HYBRID_CASE(ZEND_SL_SPEC_CONST_CV):
60312 				ZEND_SL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60313 				HYBRID_BREAK();
60314 			HYBRID_CASE(ZEND_SR_SPEC_CONST_CV):
60315 				ZEND_SR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60316 				HYBRID_BREAK();
60317 			HYBRID_CASE(ZEND_POW_SPEC_CONST_CV):
60318 				ZEND_POW_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60319 				HYBRID_BREAK();
60320 			HYBRID_CASE(ZEND_CONCAT_SPEC_CONST_CV):
60321 				ZEND_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60322 				HYBRID_BREAK();
60323 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CONST_CV):
60324 				ZEND_IS_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60325 				HYBRID_BREAK();
60326 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV):
60327 				ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60328 				HYBRID_BREAK();
60329 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CONST_CV):
60330 				ZEND_IS_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60331 				HYBRID_BREAK();
60332 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CONST_CV):
60333 				ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60334 				HYBRID_BREAK();
60335 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CONST_CV):
60336 				ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60337 				HYBRID_BREAK();
60338 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV):
60339 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60340 				HYBRID_BREAK();
60341 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CONST_CV):
60342 				ZEND_SPACESHIP_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60343 				HYBRID_BREAK();
60344 			HYBRID_CASE(ZEND_BW_OR_SPEC_CONST_CV):
60345 				ZEND_BW_OR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60346 				HYBRID_BREAK();
60347 			HYBRID_CASE(ZEND_BW_AND_SPEC_CONST_CV):
60348 				ZEND_BW_AND_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60349 				HYBRID_BREAK();
60350 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CONST_CV):
60351 				ZEND_BW_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60352 				HYBRID_BREAK();
60353 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CONST_CV):
60354 				ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60355 				HYBRID_BREAK();
60356 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CONST_CV):
60357 				ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60358 				HYBRID_BREAK();
60359 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CONST_CV):
60360 				ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60361 				HYBRID_BREAK();
60362 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV):
60363 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60364 				HYBRID_BREAK();
60365 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CONST_CV):
60366 				ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60367 				HYBRID_BREAK();
60368 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CONST_CV):
60369 				ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60370 				HYBRID_BREAK();
60371 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV):
60372 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60373 				HYBRID_BREAK();
60374 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_CONST_CV):
60375 				ZEND_FETCH_LIST_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60376 				HYBRID_BREAK();
60377 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CONST_CV):
60378 				ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60379 				HYBRID_BREAK();
60380 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CONST_CV):
60381 				ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60382 				HYBRID_BREAK();
60383 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV):
60384 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60385 				HYBRID_BREAK();
60386 			HYBRID_CASE(ZEND_INIT_USER_CALL_SPEC_CONST_CV):
60387 				ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60388 				HYBRID_BREAK();
60389 			HYBRID_CASE(ZEND_CATCH_SPEC_CONST_CV):
60390 				ZEND_CATCH_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60391 				HYBRID_BREAK();
60392 			HYBRID_CASE(ZEND_CASE_SPEC_CONST_CV):
60393 				ZEND_CASE_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60394 				HYBRID_BREAK();
60395 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV):
60396 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60397 				HYBRID_BREAK();
60398 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_CV):
60399 				ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60400 				HYBRID_BREAK();
60401 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV):
60402 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60403 				HYBRID_BREAK();
60404 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV):
60405 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60406 				HYBRID_BREAK();
60407 			HYBRID_CASE(ZEND_YIELD_SPEC_CONST_CV):
60408 				ZEND_YIELD_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60409 				HYBRID_BREAK();
60410 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CV):
60411 				ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60412 				HYBRID_BREAK();
60413 			HYBRID_CASE(ZEND_ADD_SPEC_CONST_TMPVAR):
60414 				ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60415 				HYBRID_BREAK();
60416 			HYBRID_CASE(ZEND_SUB_SPEC_CONST_TMPVAR):
60417 				ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60418 				HYBRID_BREAK();
60419 			HYBRID_CASE(ZEND_MUL_SPEC_CONST_TMPVAR):
60420 				ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60421 				HYBRID_BREAK();
60422 			HYBRID_CASE(ZEND_DIV_SPEC_CONST_TMPVAR):
60423 				ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60424 				HYBRID_BREAK();
60425 			HYBRID_CASE(ZEND_MOD_SPEC_CONST_TMPVAR):
60426 				ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60427 				HYBRID_BREAK();
60428 			HYBRID_CASE(ZEND_SL_SPEC_CONST_TMPVAR):
60429 				ZEND_SL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60430 				HYBRID_BREAK();
60431 			HYBRID_CASE(ZEND_SR_SPEC_CONST_TMPVAR):
60432 				ZEND_SR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60433 				HYBRID_BREAK();
60434 			HYBRID_CASE(ZEND_POW_SPEC_CONST_TMPVAR):
60435 				ZEND_POW_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60436 				HYBRID_BREAK();
60437 			HYBRID_CASE(ZEND_CONCAT_SPEC_CONST_TMPVAR):
60438 				ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60439 				HYBRID_BREAK();
60440 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CONST_TMPVAR):
60441 				ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60442 				HYBRID_BREAK();
60443 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR):
60444 				ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60445 				HYBRID_BREAK();
60446 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CONST_TMPVAR):
60447 				ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60448 				HYBRID_BREAK();
60449 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR):
60450 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60451 				HYBRID_BREAK();
60452 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CONST_TMPVAR):
60453 				ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60454 				HYBRID_BREAK();
60455 			HYBRID_CASE(ZEND_BW_OR_SPEC_CONST_TMPVAR):
60456 				ZEND_BW_OR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60457 				HYBRID_BREAK();
60458 			HYBRID_CASE(ZEND_BW_AND_SPEC_CONST_TMPVAR):
60459 				ZEND_BW_AND_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60460 				HYBRID_BREAK();
60461 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CONST_TMPVAR):
60462 				ZEND_BW_XOR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60463 				HYBRID_BREAK();
60464 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CONST_TMPVAR):
60465 				ZEND_BOOL_XOR_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60466 				HYBRID_BREAK();
60467 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR):
60468 				ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60469 				HYBRID_BREAK();
60470 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR):
60471 				ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60472 				HYBRID_BREAK();
60473 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR):
60474 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60475 				HYBRID_BREAK();
60476 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR):
60477 				ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60478 				HYBRID_BREAK();
60479 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR):
60480 				ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60481 				HYBRID_BREAK();
60482 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR):
60483 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60484 				HYBRID_BREAK();
60485 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_CONST_TMPVAR):
60486 				ZEND_FETCH_LIST_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60487 				HYBRID_BREAK();
60488 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR):
60489 				ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60490 				HYBRID_BREAK();
60491 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR):
60492 				ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60493 				HYBRID_BREAK();
60494 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR):
60495 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60496 				HYBRID_BREAK();
60497 			HYBRID_CASE(ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR):
60498 				ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60499 				HYBRID_BREAK();
60500 			HYBRID_CASE(ZEND_CASE_SPEC_CONST_TMPVAR):
60501 				ZEND_CASE_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60502 				HYBRID_BREAK();
60503 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR):
60504 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60505 				HYBRID_BREAK();
60506 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR):
60507 				ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60508 				HYBRID_BREAK();
60509 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR):
60510 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60511 				HYBRID_BREAK();
60512 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR):
60513 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60514 				HYBRID_BREAK();
60515 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVAR):
60516 				ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60517 				HYBRID_BREAK();
60518 			HYBRID_CASE(ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV):
60519 				ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60520 				HYBRID_BREAK();
60521 			HYBRID_CASE(ZEND_ADD_LONG_SPEC_CONST_TMPVARCV):
60522 				ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60523 				HYBRID_BREAK();
60524 			HYBRID_CASE(ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV):
60525 				ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60526 				HYBRID_BREAK();
60527 			HYBRID_CASE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV):
60528 				ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60529 				HYBRID_BREAK();
60530 			HYBRID_CASE(ZEND_SUB_LONG_SPEC_CONST_TMPVARCV):
60531 				ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60532 				HYBRID_BREAK();
60533 			HYBRID_CASE(ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV):
60534 				ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60535 				HYBRID_BREAK();
60536 			HYBRID_CASE(ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV):
60537 				ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60538 				HYBRID_BREAK();
60539 			HYBRID_CASE(ZEND_MUL_LONG_SPEC_CONST_TMPVARCV):
60540 				ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60541 				HYBRID_BREAK();
60542 			HYBRID_CASE(ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV):
60543 				ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60544 				HYBRID_BREAK();
60545 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV):
60546 				ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60547 				HYBRID_BREAK();
60548 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ):
60549 				ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60550 				HYBRID_BREAK();
60551 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ):
60552 				ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60553 				HYBRID_BREAK();
60554 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV):
60555 				ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60556 				HYBRID_BREAK();
60557 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ):
60558 				ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60559 				HYBRID_BREAK();
60560 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ):
60561 				ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60562 				HYBRID_BREAK();
60563 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV):
60564 				ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60565 				HYBRID_BREAK();
60566 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ):
60567 				ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60568 				HYBRID_BREAK();
60569 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ):
60570 				ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60571 				HYBRID_BREAK();
60572 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV):
60573 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60574 				HYBRID_BREAK();
60575 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ):
60576 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60577 				HYBRID_BREAK();
60578 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ):
60579 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60580 				HYBRID_BREAK();
60581 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV):
60582 				ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60583 				HYBRID_BREAK();
60584 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ):
60585 				ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60586 				HYBRID_BREAK();
60587 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ):
60588 				ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60589 				HYBRID_BREAK();
60590 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV):
60591 				ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60592 				HYBRID_BREAK();
60593 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ):
60594 				ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60595 				HYBRID_BREAK();
60596 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ):
60597 				ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60598 				HYBRID_BREAK();
60599 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV):
60600 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60601 				HYBRID_BREAK();
60602 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ):
60603 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60604 				HYBRID_BREAK();
60605 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ):
60606 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60607 				HYBRID_BREAK();
60608 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV):
60609 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60610 				HYBRID_BREAK();
60611 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ):
60612 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60613 				HYBRID_BREAK();
60614 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ):
60615 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60616 				HYBRID_BREAK();
60617 			HYBRID_CASE(ZEND_RETURN_SPEC_TMP):
60618 				ZEND_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60619 				HYBRID_BREAK();
60620 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_TMP):
60621 				ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60622 				HYBRID_BREAK();
60623 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_TMP):
60624 				ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60625 				HYBRID_BREAK();
60626 			HYBRID_CASE(ZEND_THROW_SPEC_TMP):
60627 				ZEND_THROW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60628 				HYBRID_BREAK();
60629 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_TMP):
60630 				ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60631 				HYBRID_BREAK();
60632 			HYBRID_CASE(ZEND_SEND_VAL_EX_SPEC_TMP_QUICK):
60633 				ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60634 				HYBRID_BREAK();
60635 			HYBRID_CASE(ZEND_SEND_USER_SPEC_TMP):
60636 				ZEND_SEND_USER_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60637 				HYBRID_BREAK();
60638 			HYBRID_CASE(ZEND_CAST_SPEC_TMP):
60639 				ZEND_CAST_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60640 				HYBRID_BREAK();
60641 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_TMP):
60642 				ZEND_FE_RESET_R_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60643 				HYBRID_BREAK();
60644 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_TMP):
60645 				ZEND_FE_RESET_RW_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60646 				HYBRID_BREAK();
60647 			HYBRID_CASE(ZEND_END_SILENCE_SPEC_TMP):
60648 				ZEND_END_SILENCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60649 				HYBRID_BREAK();
60650 			HYBRID_CASE(ZEND_JMP_SET_SPEC_TMP):
60651 				ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60652 				HYBRID_BREAK();
60653 			HYBRID_CASE(ZEND_COALESCE_SPEC_TMP):
60654 				ZEND_COALESCE_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60655 				HYBRID_BREAK();
60656 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_TMP):
60657 				ZEND_QM_ASSIGN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60658 				HYBRID_BREAK();
60659 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_TMP):
60660 				ZEND_YIELD_FROM_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60661 				HYBRID_BREAK();
60662 			HYBRID_CASE(ZEND_TYPE_CHECK_SPEC_TMP):
60663 				ZEND_TYPE_CHECK_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60664 				HYBRID_BREAK();
60665 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_TMP_CONST):
60666 				ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60667 				HYBRID_BREAK();
60668 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST):
60669 				ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60670 				HYBRID_BREAK();
60671 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST):
60672 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60673 				HYBRID_BREAK();
60674 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_TMP_CONST):
60675 				ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60676 				HYBRID_BREAK();
60677 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST):
60678 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60679 				HYBRID_BREAK();
60680 			HYBRID_CASE(ZEND_ROPE_ADD_SPEC_TMP_CONST):
60681 				ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60682 				HYBRID_BREAK();
60683 			HYBRID_CASE(ZEND_ROPE_END_SPEC_TMP_CONST):
60684 				ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60685 				HYBRID_BREAK();
60686 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST):
60687 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60688 				HYBRID_BREAK();
60689 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_CONST):
60690 				ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60691 				HYBRID_BREAK();
60692 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_CONST):
60693 				ZEND_YIELD_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60694 				HYBRID_BREAK();
60695 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_TMP_CONST):
60696 				ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60697 				HYBRID_BREAK();
60698 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_TMP_TMP):
60699 				ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60700 				HYBRID_BREAK();
60701 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP):
60702 				ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60703 				HYBRID_BREAK();
60704 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_TMP):
60705 				ZEND_YIELD_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60706 				HYBRID_BREAK();
60707 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_TMP_VAR):
60708 				ZEND_IS_IDENTICAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60709 				HYBRID_BREAK();
60710 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR):
60711 				ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60712 				HYBRID_BREAK();
60713 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_VAR):
60714 				ZEND_YIELD_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60715 				HYBRID_BREAK();
60716 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED):
60717 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60718 				HYBRID_BREAK();
60719 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED):
60720 				ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60721 				HYBRID_BREAK();
60722 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED):
60723 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60724 				HYBRID_BREAK();
60725 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_UNUSED):
60726 				ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60727 				HYBRID_BREAK();
60728 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_UNUSED):
60729 				ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60730 				HYBRID_BREAK();
60731 			HYBRID_CASE(ZEND_COUNT_SPEC_TMP_UNUSED):
60732 				ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60733 				HYBRID_BREAK();
60734 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_TMP_UNUSED):
60735 				ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60736 				HYBRID_BREAK();
60737 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_TMP_UNUSED):
60738 				ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60739 				HYBRID_BREAK();
60740 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_TMP_CV):
60741 				ZEND_IS_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60742 				HYBRID_BREAK();
60743 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV):
60744 				ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60745 				HYBRID_BREAK();
60746 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV):
60747 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60748 				HYBRID_BREAK();
60749 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_TMP_CV):
60750 				ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60751 				HYBRID_BREAK();
60752 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV):
60753 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60754 				HYBRID_BREAK();
60755 			HYBRID_CASE(ZEND_ROPE_ADD_SPEC_TMP_CV):
60756 				ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60757 				HYBRID_BREAK();
60758 			HYBRID_CASE(ZEND_ROPE_END_SPEC_TMP_CV):
60759 				ZEND_ROPE_END_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60760 				HYBRID_BREAK();
60761 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV):
60762 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60763 				HYBRID_BREAK();
60764 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_CV):
60765 				ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60766 				HYBRID_BREAK();
60767 			HYBRID_CASE(ZEND_YIELD_SPEC_TMP_CV):
60768 				ZEND_YIELD_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60769 				HYBRID_BREAK();
60770 			HYBRID_CASE(ZEND_BIND_LEXICAL_SPEC_TMP_CV):
60771 				ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60772 				HYBRID_BREAK();
60773 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR):
60774 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60775 				HYBRID_BREAK();
60776 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR):
60777 				ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60778 				HYBRID_BREAK();
60779 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR):
60780 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60781 				HYBRID_BREAK();
60782 			HYBRID_CASE(ZEND_ROPE_ADD_SPEC_TMP_TMPVAR):
60783 				ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60784 				HYBRID_BREAK();
60785 			HYBRID_CASE(ZEND_ROPE_END_SPEC_TMP_TMPVAR):
60786 				ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60787 				HYBRID_BREAK();
60788 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR):
60789 				ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60790 				HYBRID_BREAK();
60791 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR):
60792 				ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60793 				HYBRID_BREAK();
60794 			HYBRID_CASE(ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED):
60795 				ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60796 				HYBRID_BREAK();
60797 			HYBRID_CASE(ZEND_PRE_INC_SPEC_VAR_RETVAL_USED):
60798 				ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60799 				HYBRID_BREAK();
60800 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED):
60801 				ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60802 				HYBRID_BREAK();
60803 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED):
60804 				ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60805 				HYBRID_BREAK();
60806 			HYBRID_CASE(ZEND_POST_INC_SPEC_VAR):
60807 				ZEND_POST_INC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60808 				HYBRID_BREAK();
60809 			HYBRID_CASE(ZEND_POST_DEC_SPEC_VAR):
60810 				ZEND_POST_DEC_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60811 				HYBRID_BREAK();
60812 			HYBRID_CASE(ZEND_RETURN_SPEC_VAR):
60813 				ZEND_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60814 				HYBRID_BREAK();
60815 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_VAR):
60816 				ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60817 				HYBRID_BREAK();
60818 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_VAR):
60819 				ZEND_GENERATOR_RETURN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60820 				HYBRID_BREAK();
60821 			HYBRID_CASE(ZEND_THROW_SPEC_VAR):
60822 				ZEND_THROW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60823 				HYBRID_BREAK();
60824 			HYBRID_CASE(ZEND_SEND_VAR_SPEC_VAR):
60825 				ZEND_SEND_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60826 				HYBRID_BREAK();
60827 			HYBRID_CASE(ZEND_SEND_VAR_NO_REF_SPEC_VAR):
60828 				ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60829 				HYBRID_BREAK();
60830 			HYBRID_CASE(ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR):
60831 				ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60832 				HYBRID_BREAK();
60833 			HYBRID_CASE(ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK):
60834 				ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60835 				HYBRID_BREAK();
60836 			HYBRID_CASE(ZEND_SEND_REF_SPEC_VAR):
60837 				ZEND_SEND_REF_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60838 				HYBRID_BREAK();
60839 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_VAR):
60840 				ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60841 				HYBRID_BREAK();
60842 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_VAR_QUICK):
60843 				ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60844 				HYBRID_BREAK();
60845 			HYBRID_CASE(ZEND_SEND_USER_SPEC_VAR):
60846 				ZEND_SEND_USER_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60847 				HYBRID_BREAK();
60848 			HYBRID_CASE(ZEND_NEW_SPEC_VAR):
60849 				ZEND_NEW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60850 				HYBRID_BREAK();
60851 			HYBRID_CASE(ZEND_CAST_SPEC_VAR):
60852 				ZEND_CAST_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60853 				HYBRID_BREAK();
60854 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_VAR):
60855 				ZEND_FE_RESET_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60856 				HYBRID_BREAK();
60857 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_VAR):
60858 				ZEND_FE_RESET_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60859 				HYBRID_BREAK();
60860 			HYBRID_CASE(ZEND_FE_FETCH_R_SPEC_VAR):
60861 				ZEND_FE_FETCH_R_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60862 				HYBRID_BREAK();
60863 			HYBRID_CASE(ZEND_FE_FETCH_RW_SPEC_VAR):
60864 				ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60865 				HYBRID_BREAK();
60866 			HYBRID_CASE(ZEND_JMP_SET_SPEC_VAR):
60867 				ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60868 				HYBRID_BREAK();
60869 			HYBRID_CASE(ZEND_COALESCE_SPEC_VAR):
60870 				ZEND_COALESCE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60871 				HYBRID_BREAK();
60872 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_VAR):
60873 				ZEND_QM_ASSIGN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60874 				HYBRID_BREAK();
60875 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_VAR):
60876 				ZEND_YIELD_FROM_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60877 				HYBRID_BREAK();
60878 			HYBRID_CASE(ZEND_TYPE_CHECK_SPEC_VAR):
60879 				ZEND_TYPE_CHECK_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60880 				HYBRID_BREAK();
60881 			HYBRID_CASE(ZEND_SEND_VAR_SIMPLE_SPEC_VAR):
60882 				ZEND_SEND_VAR_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60883 				HYBRID_BREAK();
60884 			HYBRID_CASE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR):
60885 				ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60886 				HYBRID_BREAK();
60887 			HYBRID_CASE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_QUICK):
60888 				ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60889 				HYBRID_BREAK();
60890 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_CONST):
60891 				ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60892 				HYBRID_BREAK();
60893 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST):
60894 				ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60895 				HYBRID_BREAK();
60896 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST):
60897 				ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60898 				HYBRID_BREAK();
60899 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM):
60900 				ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60901 				HYBRID_BREAK();
60902 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ):
60903 				ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60904 				HYBRID_BREAK();
60905 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST):
60906 				ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60907 				HYBRID_BREAK();
60908 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM):
60909 				ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60910 				HYBRID_BREAK();
60911 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ):
60912 				ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60913 				HYBRID_BREAK();
60914 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST):
60915 				ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60916 				HYBRID_BREAK();
60917 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM):
60918 				ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60919 				HYBRID_BREAK();
60920 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ):
60921 				ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60922 				HYBRID_BREAK();
60923 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST):
60924 				ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60925 				HYBRID_BREAK();
60926 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM):
60927 				ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60928 				HYBRID_BREAK();
60929 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ):
60930 				ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60931 				HYBRID_BREAK();
60932 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST):
60933 				ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60934 				HYBRID_BREAK();
60935 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM):
60936 				ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60937 				HYBRID_BREAK();
60938 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ):
60939 				ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60940 				HYBRID_BREAK();
60941 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST):
60942 				ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60943 				HYBRID_BREAK();
60944 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM):
60945 				ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60946 				HYBRID_BREAK();
60947 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ):
60948 				ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60949 				HYBRID_BREAK();
60950 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST):
60951 				ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60952 				HYBRID_BREAK();
60953 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM):
60954 				ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60955 				HYBRID_BREAK();
60956 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ):
60957 				ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60958 				HYBRID_BREAK();
60959 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST):
60960 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60961 				HYBRID_BREAK();
60962 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM):
60963 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60964 				HYBRID_BREAK();
60965 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ):
60966 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60967 				HYBRID_BREAK();
60968 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST):
60969 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60970 				HYBRID_BREAK();
60971 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM):
60972 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60973 				HYBRID_BREAK();
60974 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ):
60975 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60976 				HYBRID_BREAK();
60977 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST):
60978 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60979 				HYBRID_BREAK();
60980 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM):
60981 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60982 				HYBRID_BREAK();
60983 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ):
60984 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60985 				HYBRID_BREAK();
60986 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST):
60987 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60988 				HYBRID_BREAK();
60989 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM):
60990 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60991 				HYBRID_BREAK();
60992 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ):
60993 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60994 				HYBRID_BREAK();
60995 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST):
60996 				ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
60997 				HYBRID_BREAK();
60998 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM):
60999 				ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61000 				HYBRID_BREAK();
61001 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ):
61002 				ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61003 				HYBRID_BREAK();
61004 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_CONST):
61005 				ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61006 				HYBRID_BREAK();
61007 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST):
61008 				ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61009 				HYBRID_BREAK();
61010 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_VAR_CONST):
61011 				ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61012 				HYBRID_BREAK();
61013 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_VAR_CONST):
61014 				ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61015 				HYBRID_BREAK();
61016 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_CONST):
61017 				ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61018 				HYBRID_BREAK();
61019 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_CONST):
61020 				ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61021 				HYBRID_BREAK();
61022 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST):
61023 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61024 				HYBRID_BREAK();
61025 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST):
61026 				ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61027 				HYBRID_BREAK();
61028 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_VAR_CONST):
61029 				ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61030 				HYBRID_BREAK();
61031 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_VAR_CONST):
61032 				ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61033 				HYBRID_BREAK();
61034 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST):
61035 				ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61036 				HYBRID_BREAK();
61037 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST):
61038 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61039 				HYBRID_BREAK();
61040 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST):
61041 				ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61042 				HYBRID_BREAK();
61043 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST):
61044 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61045 				HYBRID_BREAK();
61046 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP):
61047 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61048 				HYBRID_BREAK();
61049 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR):
61050 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61051 				HYBRID_BREAK();
61052 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV):
61053 				ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61054 				HYBRID_BREAK();
61055 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST):
61056 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61057 				HYBRID_BREAK();
61058 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP):
61059 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61060 				HYBRID_BREAK();
61061 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR):
61062 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61063 				HYBRID_BREAK();
61064 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV):
61065 				ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61066 				HYBRID_BREAK();
61067 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED):
61068 				ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61069 				HYBRID_BREAK();
61070 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED):
61071 				ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61072 				HYBRID_BREAK();
61073 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST):
61074 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61075 				HYBRID_BREAK();
61076 			HYBRID_CASE(ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST):
61077 				ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61078 				HYBRID_BREAK();
61079 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST):
61080 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61081 				HYBRID_BREAK();
61082 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_CONST):
61083 				ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61084 				HYBRID_BREAK();
61085 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_VAR_CONST):
61086 				ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61087 				HYBRID_BREAK();
61088 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_VAR_CONST):
61089 				ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61090 				HYBRID_BREAK();
61091 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_CONST):
61092 				ZEND_YIELD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61093 				HYBRID_BREAK();
61094 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_VAR_CONST):
61095 				ZEND_IN_ARRAY_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61096 				HYBRID_BREAK();
61097 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_TMP):
61098 				ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61099 				HYBRID_BREAK();
61100 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP):
61101 				ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61102 				HYBRID_BREAK();
61103 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED):
61104 				ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61105 				HYBRID_BREAK();
61106 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED):
61107 				ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61108 				HYBRID_BREAK();
61109 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_TMP):
61110 				ZEND_YIELD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61111 				HYBRID_BREAK();
61112 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_VAR):
61113 				ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61114 				HYBRID_BREAK();
61115 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR):
61116 				ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61117 				HYBRID_BREAK();
61118 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED):
61119 				ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61120 				HYBRID_BREAK();
61121 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED):
61122 				ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61123 				HYBRID_BREAK();
61124 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_VAR_VAR):
61125 				ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61126 				HYBRID_BREAK();
61127 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_VAR):
61128 				ZEND_YIELD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61129 				HYBRID_BREAK();
61130 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM):
61131 				ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61132 				HYBRID_BREAK();
61133 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM):
61134 				ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61135 				HYBRID_BREAK();
61136 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM):
61137 				ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61138 				HYBRID_BREAK();
61139 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM):
61140 				ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61141 				HYBRID_BREAK();
61142 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM):
61143 				ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61144 				HYBRID_BREAK();
61145 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM):
61146 				ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61147 				HYBRID_BREAK();
61148 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM):
61149 				ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61150 				HYBRID_BREAK();
61151 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM):
61152 				ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61153 				HYBRID_BREAK();
61154 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM):
61155 				ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61156 				HYBRID_BREAK();
61157 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM):
61158 				ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61159 				HYBRID_BREAK();
61160 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM):
61161 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61162 				HYBRID_BREAK();
61163 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM):
61164 				ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61165 				HYBRID_BREAK();
61166 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED):
61167 				ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61168 				HYBRID_BREAK();
61169 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED):
61170 				ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61171 				HYBRID_BREAK();
61172 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED):
61173 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61174 				HYBRID_BREAK();
61175 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST):
61176 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61177 				HYBRID_BREAK();
61178 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP):
61179 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61180 				HYBRID_BREAK();
61181 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR):
61182 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61183 				HYBRID_BREAK();
61184 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV):
61185 				ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61186 				HYBRID_BREAK();
61187 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED):
61188 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61189 				HYBRID_BREAK();
61190 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED):
61191 				ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61192 				HYBRID_BREAK();
61193 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED):
61194 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61195 				HYBRID_BREAK();
61196 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_UNUSED):
61197 				ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61198 				HYBRID_BREAK();
61199 			HYBRID_CASE(ZEND_SEPARATE_SPEC_VAR_UNUSED):
61200 				ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61201 				HYBRID_BREAK();
61202 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_UNUSED):
61203 				ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61204 				HYBRID_BREAK();
61205 			HYBRID_CASE(ZEND_MAKE_REF_SPEC_VAR_UNUSED):
61206 				ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61207 				HYBRID_BREAK();
61208 			HYBRID_CASE(ZEND_COUNT_SPEC_VAR_UNUSED):
61209 				ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61210 				HYBRID_BREAK();
61211 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_VAR_UNUSED):
61212 				ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61213 				HYBRID_BREAK();
61214 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_VAR_UNUSED):
61215 				ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61216 				HYBRID_BREAK();
61217 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_VAR_CV):
61218 				ZEND_IS_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61219 				HYBRID_BREAK();
61220 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV):
61221 				ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61222 				HYBRID_BREAK();
61223 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CV):
61224 				ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61225 				HYBRID_BREAK();
61226 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM):
61227 				ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61228 				HYBRID_BREAK();
61229 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ):
61230 				ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61231 				HYBRID_BREAK();
61232 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CV):
61233 				ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61234 				HYBRID_BREAK();
61235 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM):
61236 				ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61237 				HYBRID_BREAK();
61238 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ):
61239 				ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61240 				HYBRID_BREAK();
61241 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CV):
61242 				ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61243 				HYBRID_BREAK();
61244 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM):
61245 				ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61246 				HYBRID_BREAK();
61247 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ):
61248 				ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61249 				HYBRID_BREAK();
61250 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CV):
61251 				ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61252 				HYBRID_BREAK();
61253 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM):
61254 				ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61255 				HYBRID_BREAK();
61256 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ):
61257 				ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61258 				HYBRID_BREAK();
61259 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CV):
61260 				ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61261 				HYBRID_BREAK();
61262 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM):
61263 				ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61264 				HYBRID_BREAK();
61265 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ):
61266 				ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61267 				HYBRID_BREAK();
61268 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CV):
61269 				ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61270 				HYBRID_BREAK();
61271 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM):
61272 				ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61273 				HYBRID_BREAK();
61274 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ):
61275 				ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61276 				HYBRID_BREAK();
61277 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CV):
61278 				ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61279 				HYBRID_BREAK();
61280 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM):
61281 				ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61282 				HYBRID_BREAK();
61283 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ):
61284 				ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61285 				HYBRID_BREAK();
61286 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV):
61287 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61288 				HYBRID_BREAK();
61289 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM):
61290 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61291 				HYBRID_BREAK();
61292 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ):
61293 				ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61294 				HYBRID_BREAK();
61295 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV):
61296 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61297 				HYBRID_BREAK();
61298 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM):
61299 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61300 				HYBRID_BREAK();
61301 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ):
61302 				ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61303 				HYBRID_BREAK();
61304 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV):
61305 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61306 				HYBRID_BREAK();
61307 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM):
61308 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61309 				HYBRID_BREAK();
61310 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ):
61311 				ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61312 				HYBRID_BREAK();
61313 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV):
61314 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61315 				HYBRID_BREAK();
61316 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM):
61317 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61318 				HYBRID_BREAK();
61319 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ):
61320 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61321 				HYBRID_BREAK();
61322 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CV):
61323 				ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61324 				HYBRID_BREAK();
61325 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM):
61326 				ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61327 				HYBRID_BREAK();
61328 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ):
61329 				ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61330 				HYBRID_BREAK();
61331 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_CV):
61332 				ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61333 				HYBRID_BREAK();
61334 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_VAR_CV):
61335 				ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61336 				HYBRID_BREAK();
61337 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_VAR_CV):
61338 				ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61339 				HYBRID_BREAK();
61340 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_VAR_CV):
61341 				ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61342 				HYBRID_BREAK();
61343 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_CV):
61344 				ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61345 				HYBRID_BREAK();
61346 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_CV):
61347 				ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61348 				HYBRID_BREAK();
61349 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV):
61350 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61351 				HYBRID_BREAK();
61352 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV):
61353 				ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61354 				HYBRID_BREAK();
61355 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_VAR_CV):
61356 				ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61357 				HYBRID_BREAK();
61358 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_VAR_CV):
61359 				ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61360 				HYBRID_BREAK();
61361 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_VAR_CV):
61362 				ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61363 				HYBRID_BREAK();
61364 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV):
61365 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61366 				HYBRID_BREAK();
61367 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV):
61368 				ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61369 				HYBRID_BREAK();
61370 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST):
61371 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61372 				HYBRID_BREAK();
61373 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP):
61374 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61375 				HYBRID_BREAK();
61376 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR):
61377 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61378 				HYBRID_BREAK();
61379 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV):
61380 				ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61381 				HYBRID_BREAK();
61382 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST):
61383 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61384 				HYBRID_BREAK();
61385 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP):
61386 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61387 				HYBRID_BREAK();
61388 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR):
61389 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61390 				HYBRID_BREAK();
61391 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV):
61392 				ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61393 				HYBRID_BREAK();
61394 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED):
61395 				ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61396 				HYBRID_BREAK();
61397 			HYBRID_CASE(ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED):
61398 				ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61399 				HYBRID_BREAK();
61400 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_VAR_CV):
61401 				ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61402 				HYBRID_BREAK();
61403 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV):
61404 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61405 				HYBRID_BREAK();
61406 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV):
61407 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61408 				HYBRID_BREAK();
61409 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_CV):
61410 				ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61411 				HYBRID_BREAK();
61412 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_VAR_CV):
61413 				ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61414 				HYBRID_BREAK();
61415 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_VAR_CV):
61416 				ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61417 				HYBRID_BREAK();
61418 			HYBRID_CASE(ZEND_YIELD_SPEC_VAR_CV):
61419 				ZEND_YIELD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61420 				HYBRID_BREAK();
61421 			HYBRID_CASE(ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED):
61422 				ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61423 				HYBRID_BREAK();
61424 			HYBRID_CASE(ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED):
61425 				ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61426 				HYBRID_BREAK();
61427 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR):
61428 				ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61429 				HYBRID_BREAK();
61430 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM):
61431 				ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61432 				HYBRID_BREAK();
61433 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ):
61434 				ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61435 				HYBRID_BREAK();
61436 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR):
61437 				ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61438 				HYBRID_BREAK();
61439 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM):
61440 				ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61441 				HYBRID_BREAK();
61442 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ):
61443 				ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61444 				HYBRID_BREAK();
61445 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR):
61446 				ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61447 				HYBRID_BREAK();
61448 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM):
61449 				ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61450 				HYBRID_BREAK();
61451 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ):
61452 				ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61453 				HYBRID_BREAK();
61454 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR):
61455 				ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61456 				HYBRID_BREAK();
61457 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM):
61458 				ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61459 				HYBRID_BREAK();
61460 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ):
61461 				ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61462 				HYBRID_BREAK();
61463 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR):
61464 				ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61465 				HYBRID_BREAK();
61466 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM):
61467 				ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61468 				HYBRID_BREAK();
61469 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ):
61470 				ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61471 				HYBRID_BREAK();
61472 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR):
61473 				ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61474 				HYBRID_BREAK();
61475 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM):
61476 				ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61477 				HYBRID_BREAK();
61478 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ):
61479 				ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61480 				HYBRID_BREAK();
61481 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR):
61482 				ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61483 				HYBRID_BREAK();
61484 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM):
61485 				ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61486 				HYBRID_BREAK();
61487 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ):
61488 				ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61489 				HYBRID_BREAK();
61490 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR):
61491 				ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61492 				HYBRID_BREAK();
61493 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM):
61494 				ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61495 				HYBRID_BREAK();
61496 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ):
61497 				ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61498 				HYBRID_BREAK();
61499 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR):
61500 				ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61501 				HYBRID_BREAK();
61502 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM):
61503 				ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61504 				HYBRID_BREAK();
61505 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ):
61506 				ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61507 				HYBRID_BREAK();
61508 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR):
61509 				ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61510 				HYBRID_BREAK();
61511 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM):
61512 				ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61513 				HYBRID_BREAK();
61514 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ):
61515 				ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61516 				HYBRID_BREAK();
61517 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR):
61518 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61519 				HYBRID_BREAK();
61520 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM):
61521 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61522 				HYBRID_BREAK();
61523 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ):
61524 				ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61525 				HYBRID_BREAK();
61526 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR):
61527 				ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61528 				HYBRID_BREAK();
61529 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM):
61530 				ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61531 				HYBRID_BREAK();
61532 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ):
61533 				ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61534 				HYBRID_BREAK();
61535 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR):
61536 				ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61537 				HYBRID_BREAK();
61538 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR):
61539 				ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61540 				HYBRID_BREAK();
61541 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR):
61542 				ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61543 				HYBRID_BREAK();
61544 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR):
61545 				ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61546 				HYBRID_BREAK();
61547 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR):
61548 				ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61549 				HYBRID_BREAK();
61550 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR):
61551 				ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61552 				HYBRID_BREAK();
61553 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR):
61554 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61555 				HYBRID_BREAK();
61556 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR):
61557 				ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61558 				HYBRID_BREAK();
61559 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR):
61560 				ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61561 				HYBRID_BREAK();
61562 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR):
61563 				ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61564 				HYBRID_BREAK();
61565 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR):
61566 				ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61567 				HYBRID_BREAK();
61568 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR):
61569 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61570 				HYBRID_BREAK();
61571 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR):
61572 				ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61573 				HYBRID_BREAK();
61574 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST):
61575 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61576 				HYBRID_BREAK();
61577 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP):
61578 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61579 				HYBRID_BREAK();
61580 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR):
61581 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61582 				HYBRID_BREAK();
61583 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV):
61584 				ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61585 				HYBRID_BREAK();
61586 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST):
61587 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61588 				HYBRID_BREAK();
61589 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP):
61590 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61591 				HYBRID_BREAK();
61592 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR):
61593 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61594 				HYBRID_BREAK();
61595 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV):
61596 				ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61597 				HYBRID_BREAK();
61598 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR):
61599 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61600 				HYBRID_BREAK();
61601 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR):
61602 				ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61603 				HYBRID_BREAK();
61604 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR):
61605 				ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61606 				HYBRID_BREAK();
61607 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_VAR_TMPVAR):
61608 				ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61609 				HYBRID_BREAK();
61610 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR):
61611 				ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61612 				HYBRID_BREAK();
61613 			HYBRID_CASE(ZEND_NEW_SPEC_UNUSED):
61614 				ZEND_NEW_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61615 				HYBRID_BREAK();
61616 			HYBRID_CASE(ZEND_CLONE_SPEC_UNUSED):
61617 				ZEND_CLONE_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61618 				HYBRID_BREAK();
61619 			HYBRID_CASE(ZEND_EXIT_SPEC_UNUSED):
61620 				ZEND_EXIT_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61621 				HYBRID_BREAK();
61622 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ):
61623 				ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61624 				HYBRID_BREAK();
61625 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ):
61626 				ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61627 				HYBRID_BREAK();
61628 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ):
61629 				ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61630 				HYBRID_BREAK();
61631 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ):
61632 				ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61633 				HYBRID_BREAK();
61634 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ):
61635 				ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61636 				HYBRID_BREAK();
61637 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ):
61638 				ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61639 				HYBRID_BREAK();
61640 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ):
61641 				ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61642 				HYBRID_BREAK();
61643 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ):
61644 				ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61645 				HYBRID_BREAK();
61646 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ):
61647 				ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61648 				HYBRID_BREAK();
61649 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ):
61650 				ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61651 				HYBRID_BREAK();
61652 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ):
61653 				ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61654 				HYBRID_BREAK();
61655 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ):
61656 				ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61657 				HYBRID_BREAK();
61658 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST):
61659 				ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61660 				HYBRID_BREAK();
61661 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST):
61662 				ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61663 				HYBRID_BREAK();
61664 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST):
61665 				ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61666 				HYBRID_BREAK();
61667 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST):
61668 				ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61669 				HYBRID_BREAK();
61670 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST):
61671 				ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61672 				HYBRID_BREAK();
61673 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST):
61674 				ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61675 				HYBRID_BREAK();
61676 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST):
61677 				ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61678 				HYBRID_BREAK();
61679 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST):
61680 				ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61681 				HYBRID_BREAK();
61682 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST):
61683 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61684 				HYBRID_BREAK();
61685 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST):
61686 				ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61687 				HYBRID_BREAK();
61688 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST):
61689 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61690 				HYBRID_BREAK();
61691 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP):
61692 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61693 				HYBRID_BREAK();
61694 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR):
61695 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61696 				HYBRID_BREAK();
61697 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV):
61698 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61699 				HYBRID_BREAK();
61700 			HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_CONST):
61701 				ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61702 				HYBRID_BREAK();
61703 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST):
61704 				ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61705 				HYBRID_BREAK();
61706 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST):
61707 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61708 				HYBRID_BREAK();
61709 			HYBRID_CASE(ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST):
61710 				ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61711 				HYBRID_BREAK();
61712 			HYBRID_CASE(ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST):
61713 				ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61714 				HYBRID_BREAK();
61715 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_UNUSED_CONST):
61716 				ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61717 				HYBRID_BREAK();
61718 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST):
61719 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61720 				HYBRID_BREAK();
61721 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_CONST):
61722 				ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61723 				HYBRID_BREAK();
61724 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_TMP):
61725 				ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61726 				HYBRID_BREAK();
61727 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_VAR):
61728 				ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61729 				HYBRID_BREAK();
61730 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED):
61731 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61732 				HYBRID_BREAK();
61733 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED):
61734 				ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61735 				HYBRID_BREAK();
61736 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_UNUSED):
61737 				ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61738 				HYBRID_BREAK();
61739 			HYBRID_CASE(ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED):
61740 				ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61741 				HYBRID_BREAK();
61742 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED):
61743 				ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61744 				HYBRID_BREAK();
61745 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_UNUSED_UNUSED):
61746 				ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61747 				HYBRID_BREAK();
61748 			HYBRID_CASE(ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED):
61749 				ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61750 				HYBRID_BREAK();
61751 			HYBRID_CASE(ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED):
61752 				ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61753 				HYBRID_BREAK();
61754 			HYBRID_CASE(ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED):
61755 				ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61756 				HYBRID_BREAK();
61757 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ):
61758 				ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61759 				HYBRID_BREAK();
61760 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ):
61761 				ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61762 				HYBRID_BREAK();
61763 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ):
61764 				ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61765 				HYBRID_BREAK();
61766 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ):
61767 				ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61768 				HYBRID_BREAK();
61769 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ):
61770 				ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61771 				HYBRID_BREAK();
61772 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ):
61773 				ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61774 				HYBRID_BREAK();
61775 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ):
61776 				ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61777 				HYBRID_BREAK();
61778 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ):
61779 				ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61780 				HYBRID_BREAK();
61781 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ):
61782 				ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61783 				HYBRID_BREAK();
61784 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ):
61785 				ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61786 				HYBRID_BREAK();
61787 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ):
61788 				ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61789 				HYBRID_BREAK();
61790 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ):
61791 				ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61792 				HYBRID_BREAK();
61793 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV):
61794 				ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61795 				HYBRID_BREAK();
61796 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV):
61797 				ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61798 				HYBRID_BREAK();
61799 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_UNUSED_CV):
61800 				ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61801 				HYBRID_BREAK();
61802 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV):
61803 				ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61804 				HYBRID_BREAK();
61805 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV):
61806 				ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61807 				HYBRID_BREAK();
61808 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV):
61809 				ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61810 				HYBRID_BREAK();
61811 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV):
61812 				ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61813 				HYBRID_BREAK();
61814 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV):
61815 				ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61816 				HYBRID_BREAK();
61817 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV):
61818 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61819 				HYBRID_BREAK();
61820 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV):
61821 				ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61822 				HYBRID_BREAK();
61823 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST):
61824 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61825 				HYBRID_BREAK();
61826 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP):
61827 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61828 				HYBRID_BREAK();
61829 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR):
61830 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61831 				HYBRID_BREAK();
61832 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV):
61833 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61834 				HYBRID_BREAK();
61835 			HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_CV):
61836 				ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61837 				HYBRID_BREAK();
61838 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV):
61839 				ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61840 				HYBRID_BREAK();
61841 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV):
61842 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61843 				HYBRID_BREAK();
61844 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_UNUSED_CV):
61845 				ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61846 				HYBRID_BREAK();
61847 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV):
61848 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61849 				HYBRID_BREAK();
61850 			HYBRID_CASE(ZEND_YIELD_SPEC_UNUSED_CV):
61851 				ZEND_YIELD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61852 				HYBRID_BREAK();
61853 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ):
61854 				ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61855 				HYBRID_BREAK();
61856 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ):
61857 				ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61858 				HYBRID_BREAK();
61859 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ):
61860 				ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61861 				HYBRID_BREAK();
61862 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ):
61863 				ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61864 				HYBRID_BREAK();
61865 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ):
61866 				ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61867 				HYBRID_BREAK();
61868 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ):
61869 				ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61870 				HYBRID_BREAK();
61871 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ):
61872 				ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61873 				HYBRID_BREAK();
61874 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ):
61875 				ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61876 				HYBRID_BREAK();
61877 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ):
61878 				ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61879 				HYBRID_BREAK();
61880 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ):
61881 				ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61882 				HYBRID_BREAK();
61883 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ):
61884 				ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61885 				HYBRID_BREAK();
61886 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ):
61887 				ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61888 				HYBRID_BREAK();
61889 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR):
61890 				ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61891 				HYBRID_BREAK();
61892 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR):
61893 				ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61894 				HYBRID_BREAK();
61895 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR):
61896 				ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61897 				HYBRID_BREAK();
61898 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR):
61899 				ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61900 				HYBRID_BREAK();
61901 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR):
61902 				ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61903 				HYBRID_BREAK();
61904 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR):
61905 				ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61906 				HYBRID_BREAK();
61907 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR):
61908 				ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61909 				HYBRID_BREAK();
61910 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR):
61911 				ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61912 				HYBRID_BREAK();
61913 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR):
61914 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61915 				HYBRID_BREAK();
61916 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR):
61917 				ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61918 				HYBRID_BREAK();
61919 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST):
61920 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61921 				HYBRID_BREAK();
61922 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP):
61923 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61924 				HYBRID_BREAK();
61925 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR):
61926 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61927 				HYBRID_BREAK();
61928 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV):
61929 				ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61930 				HYBRID_BREAK();
61931 			HYBRID_CASE(ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR):
61932 				ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61933 				HYBRID_BREAK();
61934 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR):
61935 				ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61936 				HYBRID_BREAK();
61937 			HYBRID_CASE(ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR):
61938 				ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61939 				HYBRID_BREAK();
61940 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR):
61941 				ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61942 				HYBRID_BREAK();
61943 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR):
61944 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61945 				HYBRID_BREAK();
61946 			HYBRID_CASE(ZEND_BW_NOT_SPEC_CV):
61947 				ZEND_BW_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61948 				HYBRID_BREAK();
61949 			HYBRID_CASE(ZEND_BOOL_NOT_SPEC_CV):
61950 				ZEND_BOOL_NOT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61951 				HYBRID_BREAK();
61952 			HYBRID_CASE(ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED):
61953 				ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61954 				HYBRID_BREAK();
61955 			HYBRID_CASE(ZEND_PRE_INC_SPEC_CV_RETVAL_USED):
61956 				ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61957 				HYBRID_BREAK();
61958 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED):
61959 				ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61960 				HYBRID_BREAK();
61961 			HYBRID_CASE(ZEND_PRE_DEC_SPEC_CV_RETVAL_USED):
61962 				ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61963 				HYBRID_BREAK();
61964 			HYBRID_CASE(ZEND_POST_INC_SPEC_CV):
61965 				ZEND_POST_INC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61966 				HYBRID_BREAK();
61967 			HYBRID_CASE(ZEND_POST_DEC_SPEC_CV):
61968 				ZEND_POST_DEC_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61969 				HYBRID_BREAK();
61970 			HYBRID_CASE(ZEND_ECHO_SPEC_CV):
61971 				ZEND_ECHO_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61972 				HYBRID_BREAK();
61973 			HYBRID_CASE(ZEND_JMPZ_SPEC_CV):
61974 				ZEND_JMPZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61975 				HYBRID_BREAK();
61976 			HYBRID_CASE(ZEND_JMPNZ_SPEC_CV):
61977 				ZEND_JMPNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61978 				HYBRID_BREAK();
61979 			HYBRID_CASE(ZEND_JMPZNZ_SPEC_CV):
61980 				ZEND_JMPZNZ_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61981 				HYBRID_BREAK();
61982 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_CV):
61983 				ZEND_JMPZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61984 				HYBRID_BREAK();
61985 			HYBRID_CASE(ZEND_JMPNZ_EX_SPEC_CV):
61986 				ZEND_JMPNZ_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61987 				HYBRID_BREAK();
61988 			HYBRID_CASE(ZEND_RETURN_SPEC_CV):
61989 				ZEND_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61990 				HYBRID_BREAK();
61991 			HYBRID_CASE(ZEND_RETURN_BY_REF_SPEC_CV):
61992 				ZEND_RETURN_BY_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61993 				HYBRID_BREAK();
61994 			HYBRID_CASE(ZEND_GENERATOR_RETURN_SPEC_CV):
61995 				ZEND_GENERATOR_RETURN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61996 				HYBRID_BREAK();
61997 			HYBRID_CASE(ZEND_THROW_SPEC_CV):
61998 				ZEND_THROW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
61999 				HYBRID_BREAK();
62000 			HYBRID_CASE(ZEND_SEND_VAR_SPEC_CV):
62001 				ZEND_SEND_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62002 				HYBRID_BREAK();
62003 			HYBRID_CASE(ZEND_SEND_REF_SPEC_CV):
62004 				ZEND_SEND_REF_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62005 				HYBRID_BREAK();
62006 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_CV):
62007 				ZEND_SEND_VAR_EX_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62008 				HYBRID_BREAK();
62009 			HYBRID_CASE(ZEND_SEND_VAR_EX_SPEC_CV_QUICK):
62010 				ZEND_SEND_VAR_EX_SPEC_CV_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62011 				HYBRID_BREAK();
62012 			HYBRID_CASE(ZEND_SEND_USER_SPEC_CV):
62013 				ZEND_SEND_USER_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62014 				HYBRID_BREAK();
62015 			HYBRID_CASE(ZEND_BOOL_SPEC_CV):
62016 				ZEND_BOOL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62017 				HYBRID_BREAK();
62018 			HYBRID_CASE(ZEND_CLONE_SPEC_CV):
62019 				ZEND_CLONE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62020 				HYBRID_BREAK();
62021 			HYBRID_CASE(ZEND_CAST_SPEC_CV):
62022 				ZEND_CAST_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62023 				HYBRID_BREAK();
62024 			HYBRID_CASE(ZEND_INCLUDE_OR_EVAL_SPEC_CV):
62025 				ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62026 				HYBRID_BREAK();
62027 			HYBRID_CASE(ZEND_FE_RESET_R_SPEC_CV):
62028 				ZEND_FE_RESET_R_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62029 				HYBRID_BREAK();
62030 			HYBRID_CASE(ZEND_FE_RESET_RW_SPEC_CV):
62031 				ZEND_FE_RESET_RW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62032 				HYBRID_BREAK();
62033 			HYBRID_CASE(ZEND_EXIT_SPEC_CV):
62034 				ZEND_EXIT_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62035 				HYBRID_BREAK();
62036 			HYBRID_CASE(ZEND_JMP_SET_SPEC_CV):
62037 				ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62038 				HYBRID_BREAK();
62039 			HYBRID_CASE(ZEND_COALESCE_SPEC_CV):
62040 				ZEND_COALESCE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62041 				HYBRID_BREAK();
62042 			HYBRID_CASE(ZEND_QM_ASSIGN_SPEC_CV):
62043 				ZEND_QM_ASSIGN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62044 				HYBRID_BREAK();
62045 			HYBRID_CASE(ZEND_YIELD_FROM_SPEC_CV):
62046 				ZEND_YIELD_FROM_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62047 				HYBRID_BREAK();
62048 			HYBRID_CASE(ZEND_STRLEN_SPEC_CV):
62049 				ZEND_STRLEN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62050 				HYBRID_BREAK();
62051 			HYBRID_CASE(ZEND_TYPE_CHECK_SPEC_CV):
62052 				ZEND_TYPE_CHECK_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62053 				HYBRID_BREAK();
62054 			HYBRID_CASE(ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED):
62055 				ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62056 				HYBRID_BREAK();
62057 			HYBRID_CASE(ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED):
62058 				ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62059 				HYBRID_BREAK();
62060 			HYBRID_CASE(ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED):
62061 				ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62062 				HYBRID_BREAK();
62063 			HYBRID_CASE(ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED):
62064 				ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62065 				HYBRID_BREAK();
62066 			HYBRID_CASE(ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED):
62067 				ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62068 				HYBRID_BREAK();
62069 			HYBRID_CASE(ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED):
62070 				ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62071 				HYBRID_BREAK();
62072 			HYBRID_CASE(ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED):
62073 				ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62074 				HYBRID_BREAK();
62075 			HYBRID_CASE(ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED):
62076 				ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62077 				HYBRID_BREAK();
62078 			HYBRID_CASE(ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED):
62079 				ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62080 				HYBRID_BREAK();
62081 			HYBRID_CASE(ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED):
62082 				ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62083 				HYBRID_BREAK();
62084 			HYBRID_CASE(ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED):
62085 				ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62086 				HYBRID_BREAK();
62087 			HYBRID_CASE(ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED):
62088 				ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62089 				HYBRID_BREAK();
62090 			HYBRID_CASE(ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV):
62091 				ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62092 				HYBRID_BREAK();
62093 			HYBRID_CASE(ZEND_POST_INC_LONG_SPEC_CV):
62094 				ZEND_POST_INC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62095 				HYBRID_BREAK();
62096 			HYBRID_CASE(ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV):
62097 				ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62098 				HYBRID_BREAK();
62099 			HYBRID_CASE(ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV):
62100 				ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62101 				HYBRID_BREAK();
62102 			HYBRID_CASE(ZEND_POST_DEC_LONG_SPEC_CV):
62103 				ZEND_POST_DEC_LONG_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62104 				HYBRID_BREAK();
62105 			HYBRID_CASE(ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV):
62106 				ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62107 				HYBRID_BREAK();
62108 			HYBRID_CASE(ZEND_SEND_VAR_SIMPLE_SPEC_CV):
62109 				ZEND_SEND_VAR_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62110 				HYBRID_BREAK();
62111 			HYBRID_CASE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV):
62112 				ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62113 				HYBRID_BREAK();
62114 			HYBRID_CASE(ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_QUICK):
62115 				ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_QUICK_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62116 				HYBRID_BREAK();
62117 			HYBRID_CASE(ZEND_ADD_SPEC_CV_CONST):
62118 				ZEND_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62119 				HYBRID_BREAK();
62120 			HYBRID_CASE(ZEND_SUB_SPEC_CV_CONST):
62121 				ZEND_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62122 				HYBRID_BREAK();
62123 			HYBRID_CASE(ZEND_MUL_SPEC_CV_CONST):
62124 				ZEND_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62125 				HYBRID_BREAK();
62126 			HYBRID_CASE(ZEND_DIV_SPEC_CV_CONST):
62127 				ZEND_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62128 				HYBRID_BREAK();
62129 			HYBRID_CASE(ZEND_MOD_SPEC_CV_CONST):
62130 				ZEND_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62131 				HYBRID_BREAK();
62132 			HYBRID_CASE(ZEND_SL_SPEC_CV_CONST):
62133 				ZEND_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62134 				HYBRID_BREAK();
62135 			HYBRID_CASE(ZEND_SR_SPEC_CV_CONST):
62136 				ZEND_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62137 				HYBRID_BREAK();
62138 			HYBRID_CASE(ZEND_POW_SPEC_CV_CONST):
62139 				ZEND_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62140 				HYBRID_BREAK();
62141 			HYBRID_CASE(ZEND_CONCAT_SPEC_CV_CONST):
62142 				ZEND_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62143 				HYBRID_BREAK();
62144 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_CONST):
62145 				ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62146 				HYBRID_BREAK();
62147 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST):
62148 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62149 				HYBRID_BREAK();
62150 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CV_CONST):
62151 				ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62152 				HYBRID_BREAK();
62153 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CV_CONST):
62154 				ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62155 				HYBRID_BREAK();
62156 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CV_CONST):
62157 				ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62158 				HYBRID_BREAK();
62159 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST):
62160 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62161 				HYBRID_BREAK();
62162 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CV_CONST):
62163 				ZEND_SPACESHIP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62164 				HYBRID_BREAK();
62165 			HYBRID_CASE(ZEND_BW_OR_SPEC_CV_CONST):
62166 				ZEND_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62167 				HYBRID_BREAK();
62168 			HYBRID_CASE(ZEND_BW_AND_SPEC_CV_CONST):
62169 				ZEND_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62170 				HYBRID_BREAK();
62171 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CV_CONST):
62172 				ZEND_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62173 				HYBRID_BREAK();
62174 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CV_CONST):
62175 				ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62176 				HYBRID_BREAK();
62177 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CONST):
62178 				ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62179 				HYBRID_BREAK();
62180 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM):
62181 				ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62182 				HYBRID_BREAK();
62183 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ):
62184 				ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62185 				HYBRID_BREAK();
62186 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST):
62187 				ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62188 				HYBRID_BREAK();
62189 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM):
62190 				ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62191 				HYBRID_BREAK();
62192 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ):
62193 				ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62194 				HYBRID_BREAK();
62195 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST):
62196 				ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62197 				HYBRID_BREAK();
62198 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM):
62199 				ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62200 				HYBRID_BREAK();
62201 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ):
62202 				ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62203 				HYBRID_BREAK();
62204 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST):
62205 				ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62206 				HYBRID_BREAK();
62207 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM):
62208 				ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62209 				HYBRID_BREAK();
62210 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ):
62211 				ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62212 				HYBRID_BREAK();
62213 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST):
62214 				ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62215 				HYBRID_BREAK();
62216 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM):
62217 				ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62218 				HYBRID_BREAK();
62219 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ):
62220 				ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62221 				HYBRID_BREAK();
62222 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST):
62223 				ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62224 				HYBRID_BREAK();
62225 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM):
62226 				ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62227 				HYBRID_BREAK();
62228 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ):
62229 				ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62230 				HYBRID_BREAK();
62231 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST):
62232 				ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62233 				HYBRID_BREAK();
62234 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM):
62235 				ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62236 				HYBRID_BREAK();
62237 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ):
62238 				ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62239 				HYBRID_BREAK();
62240 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST):
62241 				ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62242 				HYBRID_BREAK();
62243 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM):
62244 				ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62245 				HYBRID_BREAK();
62246 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ):
62247 				ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62248 				HYBRID_BREAK();
62249 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST):
62250 				ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62251 				HYBRID_BREAK();
62252 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM):
62253 				ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62254 				HYBRID_BREAK();
62255 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ):
62256 				ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62257 				HYBRID_BREAK();
62258 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST):
62259 				ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62260 				HYBRID_BREAK();
62261 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM):
62262 				ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62263 				HYBRID_BREAK();
62264 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ):
62265 				ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62266 				HYBRID_BREAK();
62267 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST):
62268 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62269 				HYBRID_BREAK();
62270 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM):
62271 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62272 				HYBRID_BREAK();
62273 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ):
62274 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62275 				HYBRID_BREAK();
62276 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST):
62277 				ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62278 				HYBRID_BREAK();
62279 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM):
62280 				ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62281 				HYBRID_BREAK();
62282 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ):
62283 				ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62284 				HYBRID_BREAK();
62285 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_CONST):
62286 				ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62287 				HYBRID_BREAK();
62288 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_CV_CONST):
62289 				ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62290 				HYBRID_BREAK();
62291 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_CV_CONST):
62292 				ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62293 				HYBRID_BREAK();
62294 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_CV_CONST):
62295 				ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62296 				HYBRID_BREAK();
62297 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST):
62298 				ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62299 				HYBRID_BREAK();
62300 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST):
62301 				ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62302 				HYBRID_BREAK();
62303 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST):
62304 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62305 				HYBRID_BREAK();
62306 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST):
62307 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62308 				HYBRID_BREAK();
62309 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST):
62310 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62311 				HYBRID_BREAK();
62312 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST):
62313 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62314 				HYBRID_BREAK();
62315 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CV_CONST):
62316 				ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62317 				HYBRID_BREAK();
62318 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_CONST):
62319 				ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62320 				HYBRID_BREAK();
62321 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_CONST):
62322 				ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62323 				HYBRID_BREAK();
62324 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CV_CONST):
62325 				ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62326 				HYBRID_BREAK();
62327 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST):
62328 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62329 				HYBRID_BREAK();
62330 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST):
62331 				ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62332 				HYBRID_BREAK();
62333 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CV_CONST):
62334 				ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62335 				HYBRID_BREAK();
62336 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_CV_CONST):
62337 				ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62338 				HYBRID_BREAK();
62339 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_CV_CONST):
62340 				ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62341 				HYBRID_BREAK();
62342 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CV_CONST):
62343 				ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62344 				HYBRID_BREAK();
62345 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST):
62346 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62347 				HYBRID_BREAK();
62348 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST):
62349 				ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62350 				HYBRID_BREAK();
62351 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_CV_CONST):
62352 				ZEND_FETCH_LIST_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62353 				HYBRID_BREAK();
62354 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST):
62355 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62356 				HYBRID_BREAK();
62357 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP):
62358 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62359 				HYBRID_BREAK();
62360 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR):
62361 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62362 				HYBRID_BREAK();
62363 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV):
62364 				ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62365 				HYBRID_BREAK();
62366 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST):
62367 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62368 				HYBRID_BREAK();
62369 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP):
62370 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62371 				HYBRID_BREAK();
62372 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR):
62373 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62374 				HYBRID_BREAK();
62375 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV):
62376 				ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62377 				HYBRID_BREAK();
62378 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED):
62379 				ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62380 				HYBRID_BREAK();
62381 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED):
62382 				ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62383 				HYBRID_BREAK();
62384 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_CONST):
62385 				ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62386 				HYBRID_BREAK();
62387 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CV_CONST):
62388 				ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62389 				HYBRID_BREAK();
62390 			HYBRID_CASE(ZEND_CASE_SPEC_CV_CONST):
62391 				ZEND_CASE_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62392 				HYBRID_BREAK();
62393 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST):
62394 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62395 				HYBRID_BREAK();
62396 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_CONST):
62397 				ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62398 				HYBRID_BREAK();
62399 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST):
62400 				ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62401 				HYBRID_BREAK();
62402 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_CV_CONST):
62403 				ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62404 				HYBRID_BREAK();
62405 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_CV_CONST):
62406 				ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62407 				HYBRID_BREAK();
62408 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST):
62409 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62410 				HYBRID_BREAK();
62411 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST):
62412 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62413 				HYBRID_BREAK();
62414 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST):
62415 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62416 				HYBRID_BREAK();
62417 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_CV_CONST):
62418 				ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62419 				HYBRID_BREAK();
62420 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_CONST):
62421 				ZEND_YIELD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62422 				HYBRID_BREAK();
62423 			HYBRID_CASE(ZEND_BIND_GLOBAL_SPEC_CV_CONST):
62424 				ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62425 				HYBRID_BREAK();
62426 			HYBRID_CASE(ZEND_BIND_STATIC_SPEC_CV_CONST):
62427 				ZEND_BIND_STATIC_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62428 				HYBRID_BREAK();
62429 			HYBRID_CASE(ZEND_SWITCH_LONG_SPEC_CV_CONST):
62430 				ZEND_SWITCH_LONG_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62431 				HYBRID_BREAK();
62432 			HYBRID_CASE(ZEND_SWITCH_STRING_SPEC_CV_CONST):
62433 				ZEND_SWITCH_STRING_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62434 				HYBRID_BREAK();
62435 			HYBRID_CASE(ZEND_IN_ARRAY_SPEC_CV_CONST):
62436 				ZEND_IN_ARRAY_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62437 				HYBRID_BREAK();
62438 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST):
62439 				ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62440 				HYBRID_BREAK();
62441 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_TMP):
62442 				ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62443 				HYBRID_BREAK();
62444 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP):
62445 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62446 				HYBRID_BREAK();
62447 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED):
62448 				ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62449 				HYBRID_BREAK();
62450 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED):
62451 				ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62452 				HYBRID_BREAK();
62453 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_TMP):
62454 				ZEND_YIELD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62455 				HYBRID_BREAK();
62456 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_VAR):
62457 				ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62458 				HYBRID_BREAK();
62459 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR):
62460 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62461 				HYBRID_BREAK();
62462 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR):
62463 				ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62464 				HYBRID_BREAK();
62465 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR):
62466 				ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62467 				HYBRID_BREAK();
62468 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR):
62469 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62470 				HYBRID_BREAK();
62471 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR):
62472 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62473 				HYBRID_BREAK();
62474 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR):
62475 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62476 				HYBRID_BREAK();
62477 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR):
62478 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62479 				HYBRID_BREAK();
62480 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED):
62481 				ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62482 				HYBRID_BREAK();
62483 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED):
62484 				ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62485 				HYBRID_BREAK();
62486 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_CV_VAR):
62487 				ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62488 				HYBRID_BREAK();
62489 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR):
62490 				ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62491 				HYBRID_BREAK();
62492 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR):
62493 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62494 				HYBRID_BREAK();
62495 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_CV_VAR):
62496 				ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62497 				HYBRID_BREAK();
62498 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_VAR):
62499 				ZEND_YIELD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62500 				HYBRID_BREAK();
62501 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM):
62502 				ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62503 				HYBRID_BREAK();
62504 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM):
62505 				ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62506 				HYBRID_BREAK();
62507 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM):
62508 				ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62509 				HYBRID_BREAK();
62510 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM):
62511 				ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62512 				HYBRID_BREAK();
62513 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM):
62514 				ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62515 				HYBRID_BREAK();
62516 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM):
62517 				ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62518 				HYBRID_BREAK();
62519 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM):
62520 				ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62521 				HYBRID_BREAK();
62522 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM):
62523 				ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62524 				HYBRID_BREAK();
62525 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM):
62526 				ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62527 				HYBRID_BREAK();
62528 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM):
62529 				ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62530 				HYBRID_BREAK();
62531 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM):
62532 				ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62533 				HYBRID_BREAK();
62534 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM):
62535 				ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62536 				HYBRID_BREAK();
62537 			HYBRID_CASE(ZEND_FETCH_R_SPEC_CV_UNUSED):
62538 				ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62539 				HYBRID_BREAK();
62540 			HYBRID_CASE(ZEND_FETCH_W_SPEC_CV_UNUSED):
62541 				ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62542 				HYBRID_BREAK();
62543 			HYBRID_CASE(ZEND_FETCH_RW_SPEC_CV_UNUSED):
62544 				ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62545 				HYBRID_BREAK();
62546 			HYBRID_CASE(ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED):
62547 				ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62548 				HYBRID_BREAK();
62549 			HYBRID_CASE(ZEND_FETCH_UNSET_SPEC_CV_UNUSED):
62550 				ZEND_FETCH_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62551 				HYBRID_BREAK();
62552 			HYBRID_CASE(ZEND_FETCH_IS_SPEC_CV_UNUSED):
62553 				ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62554 				HYBRID_BREAK();
62555 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED):
62556 				ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62557 				HYBRID_BREAK();
62558 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED):
62559 				ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62560 				HYBRID_BREAK();
62561 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED):
62562 				ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62563 				HYBRID_BREAK();
62564 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED):
62565 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62566 				HYBRID_BREAK();
62567 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED):
62568 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62569 				HYBRID_BREAK();
62570 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED):
62571 				ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62572 				HYBRID_BREAK();
62573 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_UNUSED):
62574 				ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62575 				HYBRID_BREAK();
62576 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED):
62577 				ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62578 				HYBRID_BREAK();
62579 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED):
62580 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62581 				HYBRID_BREAK();
62582 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST):
62583 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62584 				HYBRID_BREAK();
62585 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP):
62586 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62587 				HYBRID_BREAK();
62588 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR):
62589 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62590 				HYBRID_BREAK();
62591 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV):
62592 				ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62593 				HYBRID_BREAK();
62594 			HYBRID_CASE(ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED):
62595 				ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62596 				HYBRID_BREAK();
62597 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED):
62598 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62599 				HYBRID_BREAK();
62600 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_UNUSED):
62601 				ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62602 				HYBRID_BREAK();
62603 			HYBRID_CASE(ZEND_UNSET_CV_SPEC_CV_UNUSED):
62604 				ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62605 				HYBRID_BREAK();
62606 			HYBRID_CASE(ZEND_UNSET_VAR_SPEC_CV_UNUSED):
62607 				ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62608 				HYBRID_BREAK();
62609 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED):
62610 				ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62611 				HYBRID_BREAK();
62612 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED):
62613 				ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62614 				HYBRID_BREAK();
62615 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED):
62616 				ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62617 				HYBRID_BREAK();
62618 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED):
62619 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62620 				HYBRID_BREAK();
62621 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_CV_UNUSED):
62622 				ZEND_INSTANCEOF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62623 				HYBRID_BREAK();
62624 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_UNUSED):
62625 				ZEND_YIELD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62626 				HYBRID_BREAK();
62627 			HYBRID_CASE(ZEND_CHECK_VAR_SPEC_CV_UNUSED):
62628 				ZEND_CHECK_VAR_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62629 				HYBRID_BREAK();
62630 			HYBRID_CASE(ZEND_MAKE_REF_SPEC_CV_UNUSED):
62631 				ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62632 				HYBRID_BREAK();
62633 			HYBRID_CASE(ZEND_COUNT_SPEC_CV_UNUSED):
62634 				ZEND_COUNT_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62635 				HYBRID_BREAK();
62636 			HYBRID_CASE(ZEND_GET_CLASS_SPEC_CV_UNUSED):
62637 				ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62638 				HYBRID_BREAK();
62639 			HYBRID_CASE(ZEND_GET_TYPE_SPEC_CV_UNUSED):
62640 				ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62641 				HYBRID_BREAK();
62642 			HYBRID_CASE(ZEND_ADD_SPEC_CV_CV):
62643 				ZEND_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62644 				HYBRID_BREAK();
62645 			HYBRID_CASE(ZEND_SUB_SPEC_CV_CV):
62646 				ZEND_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62647 				HYBRID_BREAK();
62648 			HYBRID_CASE(ZEND_MUL_SPEC_CV_CV):
62649 				ZEND_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62650 				HYBRID_BREAK();
62651 			HYBRID_CASE(ZEND_DIV_SPEC_CV_CV):
62652 				ZEND_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62653 				HYBRID_BREAK();
62654 			HYBRID_CASE(ZEND_MOD_SPEC_CV_CV):
62655 				ZEND_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62656 				HYBRID_BREAK();
62657 			HYBRID_CASE(ZEND_SL_SPEC_CV_CV):
62658 				ZEND_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62659 				HYBRID_BREAK();
62660 			HYBRID_CASE(ZEND_SR_SPEC_CV_CV):
62661 				ZEND_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62662 				HYBRID_BREAK();
62663 			HYBRID_CASE(ZEND_POW_SPEC_CV_CV):
62664 				ZEND_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62665 				HYBRID_BREAK();
62666 			HYBRID_CASE(ZEND_CONCAT_SPEC_CV_CV):
62667 				ZEND_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62668 				HYBRID_BREAK();
62669 			HYBRID_CASE(ZEND_IS_IDENTICAL_SPEC_CV_CV):
62670 				ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62671 				HYBRID_BREAK();
62672 			HYBRID_CASE(ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV):
62673 				ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62674 				HYBRID_BREAK();
62675 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CV_CV):
62676 				ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62677 				HYBRID_BREAK();
62678 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CV_CV):
62679 				ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62680 				HYBRID_BREAK();
62681 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CV_CV):
62682 				ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62683 				HYBRID_BREAK();
62684 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV):
62685 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62686 				HYBRID_BREAK();
62687 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CV_CV):
62688 				ZEND_SPACESHIP_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62689 				HYBRID_BREAK();
62690 			HYBRID_CASE(ZEND_BW_OR_SPEC_CV_CV):
62691 				ZEND_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62692 				HYBRID_BREAK();
62693 			HYBRID_CASE(ZEND_BW_AND_SPEC_CV_CV):
62694 				ZEND_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62695 				HYBRID_BREAK();
62696 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CV_CV):
62697 				ZEND_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62698 				HYBRID_BREAK();
62699 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CV_CV):
62700 				ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62701 				HYBRID_BREAK();
62702 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CV):
62703 				ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62704 				HYBRID_BREAK();
62705 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM):
62706 				ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62707 				HYBRID_BREAK();
62708 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ):
62709 				ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62710 				HYBRID_BREAK();
62711 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CV):
62712 				ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62713 				HYBRID_BREAK();
62714 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM):
62715 				ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62716 				HYBRID_BREAK();
62717 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ):
62718 				ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62719 				HYBRID_BREAK();
62720 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CV):
62721 				ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62722 				HYBRID_BREAK();
62723 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM):
62724 				ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62725 				HYBRID_BREAK();
62726 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ):
62727 				ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62728 				HYBRID_BREAK();
62729 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CV):
62730 				ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62731 				HYBRID_BREAK();
62732 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM):
62733 				ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62734 				HYBRID_BREAK();
62735 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ):
62736 				ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62737 				HYBRID_BREAK();
62738 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CV):
62739 				ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62740 				HYBRID_BREAK();
62741 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM):
62742 				ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62743 				HYBRID_BREAK();
62744 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ):
62745 				ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62746 				HYBRID_BREAK();
62747 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CV):
62748 				ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62749 				HYBRID_BREAK();
62750 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CV_DIM):
62751 				ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62752 				HYBRID_BREAK();
62753 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ):
62754 				ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62755 				HYBRID_BREAK();
62756 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CV):
62757 				ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62758 				HYBRID_BREAK();
62759 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CV_DIM):
62760 				ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62761 				HYBRID_BREAK();
62762 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ):
62763 				ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62764 				HYBRID_BREAK();
62765 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV):
62766 				ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62767 				HYBRID_BREAK();
62768 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM):
62769 				ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62770 				HYBRID_BREAK();
62771 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ):
62772 				ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62773 				HYBRID_BREAK();
62774 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV):
62775 				ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62776 				HYBRID_BREAK();
62777 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM):
62778 				ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62779 				HYBRID_BREAK();
62780 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ):
62781 				ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62782 				HYBRID_BREAK();
62783 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV):
62784 				ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62785 				HYBRID_BREAK();
62786 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM):
62787 				ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62788 				HYBRID_BREAK();
62789 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ):
62790 				ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62791 				HYBRID_BREAK();
62792 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV):
62793 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62794 				HYBRID_BREAK();
62795 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM):
62796 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62797 				HYBRID_BREAK();
62798 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ):
62799 				ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62800 				HYBRID_BREAK();
62801 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CV):
62802 				ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62803 				HYBRID_BREAK();
62804 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CV_DIM):
62805 				ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62806 				HYBRID_BREAK();
62807 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ):
62808 				ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62809 				HYBRID_BREAK();
62810 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_CV):
62811 				ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62812 				HYBRID_BREAK();
62813 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_CV_CV):
62814 				ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62815 				HYBRID_BREAK();
62816 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_CV_CV):
62817 				ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62818 				HYBRID_BREAK();
62819 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_CV_CV):
62820 				ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62821 				HYBRID_BREAK();
62822 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CV_CV):
62823 				ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62824 				HYBRID_BREAK();
62825 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_CV):
62826 				ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62827 				HYBRID_BREAK();
62828 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_CV):
62829 				ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62830 				HYBRID_BREAK();
62831 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CV_CV):
62832 				ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62833 				HYBRID_BREAK();
62834 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV):
62835 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62836 				HYBRID_BREAK();
62837 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_CV_CV):
62838 				ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62839 				HYBRID_BREAK();
62840 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CV_CV):
62841 				ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62842 				HYBRID_BREAK();
62843 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_CV_CV):
62844 				ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62845 				HYBRID_BREAK();
62846 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_CV_CV):
62847 				ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62848 				HYBRID_BREAK();
62849 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CV_CV):
62850 				ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62851 				HYBRID_BREAK();
62852 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV):
62853 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62854 				HYBRID_BREAK();
62855 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV):
62856 				ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62857 				HYBRID_BREAK();
62858 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_CV_CV):
62859 				ZEND_FETCH_LIST_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62860 				HYBRID_BREAK();
62861 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST):
62862 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62863 				HYBRID_BREAK();
62864 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP):
62865 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62866 				HYBRID_BREAK();
62867 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR):
62868 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62869 				HYBRID_BREAK();
62870 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV):
62871 				ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62872 				HYBRID_BREAK();
62873 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST):
62874 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62875 				HYBRID_BREAK();
62876 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP):
62877 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62878 				HYBRID_BREAK();
62879 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR):
62880 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62881 				HYBRID_BREAK();
62882 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV):
62883 				ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62884 				HYBRID_BREAK();
62885 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED):
62886 				ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62887 				HYBRID_BREAK();
62888 			HYBRID_CASE(ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED):
62889 				ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62890 				HYBRID_BREAK();
62891 			HYBRID_CASE(ZEND_ASSIGN_REF_SPEC_CV_CV):
62892 				ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62893 				HYBRID_BREAK();
62894 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_CV):
62895 				ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62896 				HYBRID_BREAK();
62897 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CV_CV):
62898 				ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62899 				HYBRID_BREAK();
62900 			HYBRID_CASE(ZEND_CASE_SPEC_CV_CV):
62901 				ZEND_CASE_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62902 				HYBRID_BREAK();
62903 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV):
62904 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62905 				HYBRID_BREAK();
62906 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_CV):
62907 				ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62908 				HYBRID_BREAK();
62909 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_CV_CV):
62910 				ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62911 				HYBRID_BREAK();
62912 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_CV_CV):
62913 				ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62914 				HYBRID_BREAK();
62915 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV):
62916 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62917 				HYBRID_BREAK();
62918 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV):
62919 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62920 				HYBRID_BREAK();
62921 			HYBRID_CASE(ZEND_YIELD_SPEC_CV_CV):
62922 				ZEND_YIELD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62923 				HYBRID_BREAK();
62924 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CV):
62925 				ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62926 				HYBRID_BREAK();
62927 			HYBRID_CASE(ZEND_ADD_SPEC_CV_TMPVAR):
62928 				ZEND_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62929 				HYBRID_BREAK();
62930 			HYBRID_CASE(ZEND_SUB_SPEC_CV_TMPVAR):
62931 				ZEND_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62932 				HYBRID_BREAK();
62933 			HYBRID_CASE(ZEND_MUL_SPEC_CV_TMPVAR):
62934 				ZEND_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62935 				HYBRID_BREAK();
62936 			HYBRID_CASE(ZEND_DIV_SPEC_CV_TMPVAR):
62937 				ZEND_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62938 				HYBRID_BREAK();
62939 			HYBRID_CASE(ZEND_MOD_SPEC_CV_TMPVAR):
62940 				ZEND_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62941 				HYBRID_BREAK();
62942 			HYBRID_CASE(ZEND_SL_SPEC_CV_TMPVAR):
62943 				ZEND_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62944 				HYBRID_BREAK();
62945 			HYBRID_CASE(ZEND_SR_SPEC_CV_TMPVAR):
62946 				ZEND_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62947 				HYBRID_BREAK();
62948 			HYBRID_CASE(ZEND_POW_SPEC_CV_TMPVAR):
62949 				ZEND_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62950 				HYBRID_BREAK();
62951 			HYBRID_CASE(ZEND_CONCAT_SPEC_CV_TMPVAR):
62952 				ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62953 				HYBRID_BREAK();
62954 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_CV_TMPVAR):
62955 				ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62956 				HYBRID_BREAK();
62957 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR):
62958 				ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62959 				HYBRID_BREAK();
62960 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_CV_TMPVAR):
62961 				ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62962 				HYBRID_BREAK();
62963 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR):
62964 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62965 				HYBRID_BREAK();
62966 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_CV_TMPVAR):
62967 				ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62968 				HYBRID_BREAK();
62969 			HYBRID_CASE(ZEND_BW_OR_SPEC_CV_TMPVAR):
62970 				ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62971 				HYBRID_BREAK();
62972 			HYBRID_CASE(ZEND_BW_AND_SPEC_CV_TMPVAR):
62973 				ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62974 				HYBRID_BREAK();
62975 			HYBRID_CASE(ZEND_BW_XOR_SPEC_CV_TMPVAR):
62976 				ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62977 				HYBRID_BREAK();
62978 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_CV_TMPVAR):
62979 				ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62980 				HYBRID_BREAK();
62981 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR):
62982 				ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62983 				HYBRID_BREAK();
62984 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM):
62985 				ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62986 				HYBRID_BREAK();
62987 			HYBRID_CASE(ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ):
62988 				ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62989 				HYBRID_BREAK();
62990 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR):
62991 				ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62992 				HYBRID_BREAK();
62993 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM):
62994 				ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62995 				HYBRID_BREAK();
62996 			HYBRID_CASE(ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ):
62997 				ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
62998 				HYBRID_BREAK();
62999 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR):
63000 				ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63001 				HYBRID_BREAK();
63002 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM):
63003 				ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63004 				HYBRID_BREAK();
63005 			HYBRID_CASE(ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ):
63006 				ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63007 				HYBRID_BREAK();
63008 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR):
63009 				ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63010 				HYBRID_BREAK();
63011 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM):
63012 				ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63013 				HYBRID_BREAK();
63014 			HYBRID_CASE(ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ):
63015 				ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63016 				HYBRID_BREAK();
63017 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR):
63018 				ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63019 				HYBRID_BREAK();
63020 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM):
63021 				ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63022 				HYBRID_BREAK();
63023 			HYBRID_CASE(ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ):
63024 				ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63025 				HYBRID_BREAK();
63026 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR):
63027 				ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63028 				HYBRID_BREAK();
63029 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM):
63030 				ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63031 				HYBRID_BREAK();
63032 			HYBRID_CASE(ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ):
63033 				ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63034 				HYBRID_BREAK();
63035 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR):
63036 				ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63037 				HYBRID_BREAK();
63038 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM):
63039 				ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63040 				HYBRID_BREAK();
63041 			HYBRID_CASE(ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ):
63042 				ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63043 				HYBRID_BREAK();
63044 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR):
63045 				ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63046 				HYBRID_BREAK();
63047 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM):
63048 				ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63049 				HYBRID_BREAK();
63050 			HYBRID_CASE(ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ):
63051 				ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63052 				HYBRID_BREAK();
63053 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR):
63054 				ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63055 				HYBRID_BREAK();
63056 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM):
63057 				ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63058 				HYBRID_BREAK();
63059 			HYBRID_CASE(ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ):
63060 				ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63061 				HYBRID_BREAK();
63062 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR):
63063 				ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63064 				HYBRID_BREAK();
63065 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM):
63066 				ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63067 				HYBRID_BREAK();
63068 			HYBRID_CASE(ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ):
63069 				ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63070 				HYBRID_BREAK();
63071 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR):
63072 				ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63073 				HYBRID_BREAK();
63074 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM):
63075 				ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63076 				HYBRID_BREAK();
63077 			HYBRID_CASE(ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ):
63078 				ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63079 				HYBRID_BREAK();
63080 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR):
63081 				ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63082 				HYBRID_BREAK();
63083 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM):
63084 				ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63085 				HYBRID_BREAK();
63086 			HYBRID_CASE(ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ):
63087 				ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63088 				HYBRID_BREAK();
63089 			HYBRID_CASE(ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR):
63090 				ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63091 				HYBRID_BREAK();
63092 			HYBRID_CASE(ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR):
63093 				ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63094 				HYBRID_BREAK();
63095 			HYBRID_CASE(ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR):
63096 				ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63097 				HYBRID_BREAK();
63098 			HYBRID_CASE(ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR):
63099 				ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63100 				HYBRID_BREAK();
63101 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR):
63102 				ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63103 				HYBRID_BREAK();
63104 			HYBRID_CASE(ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR):
63105 				ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63106 				HYBRID_BREAK();
63107 			HYBRID_CASE(ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR):
63108 				ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63109 				HYBRID_BREAK();
63110 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR):
63111 				ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63112 				HYBRID_BREAK();
63113 			HYBRID_CASE(ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR):
63114 				ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63115 				HYBRID_BREAK();
63116 			HYBRID_CASE(ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR):
63117 				ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63118 				HYBRID_BREAK();
63119 			HYBRID_CASE(ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR):
63120 				ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63121 				HYBRID_BREAK();
63122 			HYBRID_CASE(ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR):
63123 				ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63124 				HYBRID_BREAK();
63125 			HYBRID_CASE(ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR):
63126 				ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63127 				HYBRID_BREAK();
63128 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR):
63129 				ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63130 				HYBRID_BREAK();
63131 			HYBRID_CASE(ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR):
63132 				ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63133 				HYBRID_BREAK();
63134 			HYBRID_CASE(ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR):
63135 				ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63136 				HYBRID_BREAK();
63137 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_CV_TMPVAR):
63138 				ZEND_FETCH_LIST_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63139 				HYBRID_BREAK();
63140 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST):
63141 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63142 				HYBRID_BREAK();
63143 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP):
63144 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63145 				HYBRID_BREAK();
63146 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR):
63147 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63148 				HYBRID_BREAK();
63149 			HYBRID_CASE(ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV):
63150 				ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63151 				HYBRID_BREAK();
63152 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST):
63153 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63154 				HYBRID_BREAK();
63155 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP):
63156 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63157 				HYBRID_BREAK();
63158 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR):
63159 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63160 				HYBRID_BREAK();
63161 			HYBRID_CASE(ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV):
63162 				ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63163 				HYBRID_BREAK();
63164 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_CV_TMPVAR):
63165 				ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63166 				HYBRID_BREAK();
63167 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR):
63168 				ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63169 				HYBRID_BREAK();
63170 			HYBRID_CASE(ZEND_CASE_SPEC_CV_TMPVAR):
63171 				ZEND_CASE_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63172 				HYBRID_BREAK();
63173 			HYBRID_CASE(ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR):
63174 				ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63175 				HYBRID_BREAK();
63176 			HYBRID_CASE(ZEND_INIT_ARRAY_SPEC_CV_TMPVAR):
63177 				ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63178 				HYBRID_BREAK();
63179 			HYBRID_CASE(ZEND_UNSET_DIM_SPEC_CV_TMPVAR):
63180 				ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63181 				HYBRID_BREAK();
63182 			HYBRID_CASE(ZEND_UNSET_OBJ_SPEC_CV_TMPVAR):
63183 				ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63184 				HYBRID_BREAK();
63185 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR):
63186 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63187 				HYBRID_BREAK();
63188 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR):
63189 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63190 				HYBRID_BREAK();
63191 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVAR):
63192 				ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63193 				HYBRID_BREAK();
63194 			HYBRID_CASE(ZEND_BW_NOT_SPEC_TMPVAR):
63195 				ZEND_BW_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63196 				HYBRID_BREAK();
63197 			HYBRID_CASE(ZEND_BOOL_NOT_SPEC_TMPVAR):
63198 				ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63199 				HYBRID_BREAK();
63200 			HYBRID_CASE(ZEND_ECHO_SPEC_TMPVAR):
63201 				ZEND_ECHO_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63202 				HYBRID_BREAK();
63203 			HYBRID_CASE(ZEND_JMPZ_SPEC_TMPVAR):
63204 				ZEND_JMPZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63205 				HYBRID_BREAK();
63206 			HYBRID_CASE(ZEND_JMPNZ_SPEC_TMPVAR):
63207 				ZEND_JMPNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63208 				HYBRID_BREAK();
63209 			HYBRID_CASE(ZEND_JMPZNZ_SPEC_TMPVAR):
63210 				ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63211 				HYBRID_BREAK();
63212 			HYBRID_CASE(ZEND_JMPZ_EX_SPEC_TMPVAR):
63213 				ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63214 				HYBRID_BREAK();
63215 			HYBRID_CASE(ZEND_JMPNZ_EX_SPEC_TMPVAR):
63216 				ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63217 				HYBRID_BREAK();
63218 			HYBRID_CASE(ZEND_FREE_SPEC_TMPVAR):
63219 				ZEND_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63220 				HYBRID_BREAK();
63221 			HYBRID_CASE(ZEND_FE_FREE_SPEC_TMPVAR):
63222 				ZEND_FE_FREE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63223 				HYBRID_BREAK();
63224 			HYBRID_CASE(ZEND_SEND_VAL_SPEC_TMPVAR):
63225 				ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63226 				HYBRID_BREAK();
63227 			HYBRID_CASE(ZEND_BOOL_SPEC_TMPVAR):
63228 				ZEND_BOOL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63229 				HYBRID_BREAK();
63230 			HYBRID_CASE(ZEND_CLONE_SPEC_TMPVAR):
63231 				ZEND_CLONE_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63232 				HYBRID_BREAK();
63233 			HYBRID_CASE(ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR):
63234 				ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63235 				HYBRID_BREAK();
63236 			HYBRID_CASE(ZEND_EXIT_SPEC_TMPVAR):
63237 				ZEND_EXIT_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63238 				HYBRID_BREAK();
63239 			HYBRID_CASE(ZEND_STRLEN_SPEC_TMPVAR):
63240 				ZEND_STRLEN_SPEC_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63241 				HYBRID_BREAK();
63242 			HYBRID_CASE(ZEND_ADD_SPEC_TMPVAR_CONST):
63243 				ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63244 				HYBRID_BREAK();
63245 			HYBRID_CASE(ZEND_SUB_SPEC_TMPVAR_CONST):
63246 				ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63247 				HYBRID_BREAK();
63248 			HYBRID_CASE(ZEND_MUL_SPEC_TMPVAR_CONST):
63249 				ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63250 				HYBRID_BREAK();
63251 			HYBRID_CASE(ZEND_DIV_SPEC_TMPVAR_CONST):
63252 				ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63253 				HYBRID_BREAK();
63254 			HYBRID_CASE(ZEND_MOD_SPEC_TMPVAR_CONST):
63255 				ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63256 				HYBRID_BREAK();
63257 			HYBRID_CASE(ZEND_SL_SPEC_TMPVAR_CONST):
63258 				ZEND_SL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63259 				HYBRID_BREAK();
63260 			HYBRID_CASE(ZEND_SR_SPEC_TMPVAR_CONST):
63261 				ZEND_SR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63262 				HYBRID_BREAK();
63263 			HYBRID_CASE(ZEND_POW_SPEC_TMPVAR_CONST):
63264 				ZEND_POW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63265 				HYBRID_BREAK();
63266 			HYBRID_CASE(ZEND_CONCAT_SPEC_TMPVAR_CONST):
63267 				ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63268 				HYBRID_BREAK();
63269 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_TMPVAR_CONST):
63270 				ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63271 				HYBRID_BREAK();
63272 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST):
63273 				ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63274 				HYBRID_BREAK();
63275 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_TMPVAR_CONST):
63276 				ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63277 				HYBRID_BREAK();
63278 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST):
63279 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63280 				HYBRID_BREAK();
63281 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_TMPVAR_CONST):
63282 				ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63283 				HYBRID_BREAK();
63284 			HYBRID_CASE(ZEND_BW_OR_SPEC_TMPVAR_CONST):
63285 				ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63286 				HYBRID_BREAK();
63287 			HYBRID_CASE(ZEND_BW_AND_SPEC_TMPVAR_CONST):
63288 				ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63289 				HYBRID_BREAK();
63290 			HYBRID_CASE(ZEND_BW_XOR_SPEC_TMPVAR_CONST):
63291 				ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63292 				HYBRID_BREAK();
63293 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_TMPVAR_CONST):
63294 				ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63295 				HYBRID_BREAK();
63296 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST):
63297 				ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63298 				HYBRID_BREAK();
63299 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST):
63300 				ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63301 				HYBRID_BREAK();
63302 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST):
63303 				ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63304 				HYBRID_BREAK();
63305 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST):
63306 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63307 				HYBRID_BREAK();
63308 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST):
63309 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63310 				HYBRID_BREAK();
63311 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST):
63312 				ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63313 				HYBRID_BREAK();
63314 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST):
63315 				ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63316 				HYBRID_BREAK();
63317 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST):
63318 				ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63319 				HYBRID_BREAK();
63320 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST):
63321 				ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63322 				HYBRID_BREAK();
63323 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_TMPVAR_CONST):
63324 				ZEND_FETCH_LIST_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63325 				HYBRID_BREAK();
63326 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST):
63327 				ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63328 				HYBRID_BREAK();
63329 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST):
63330 				ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63331 				HYBRID_BREAK();
63332 			HYBRID_CASE(ZEND_CASE_SPEC_TMPVAR_CONST):
63333 				ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63334 				HYBRID_BREAK();
63335 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST):
63336 				ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63337 				HYBRID_BREAK();
63338 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST):
63339 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63340 				HYBRID_BREAK();
63341 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST):
63342 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63343 				HYBRID_BREAK();
63344 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST):
63345 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63346 				HYBRID_BREAK();
63347 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_TMPVAR_CONST):
63348 				ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63349 				HYBRID_BREAK();
63350 			HYBRID_CASE(ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST):
63351 				ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63352 				HYBRID_BREAK();
63353 			HYBRID_CASE(ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST):
63354 				ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63355 				HYBRID_BREAK();
63356 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST):
63357 				ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63358 				HYBRID_BREAK();
63359 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR):
63360 				ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63361 				HYBRID_BREAK();
63362 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR):
63363 				ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63364 				HYBRID_BREAK();
63365 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR):
63366 				ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63367 				HYBRID_BREAK();
63368 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR):
63369 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63370 				HYBRID_BREAK();
63371 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR):
63372 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63373 				HYBRID_BREAK();
63374 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR):
63375 				ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63376 				HYBRID_BREAK();
63377 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR):
63378 				ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63379 				HYBRID_BREAK();
63380 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR):
63381 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63382 				HYBRID_BREAK();
63383 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_TMPVAR_VAR):
63384 				ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63385 				HYBRID_BREAK();
63386 			HYBRID_CASE(ZEND_FETCH_R_SPEC_TMPVAR_UNUSED):
63387 				ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63388 				HYBRID_BREAK();
63389 			HYBRID_CASE(ZEND_FETCH_W_SPEC_TMPVAR_UNUSED):
63390 				ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63391 				HYBRID_BREAK();
63392 			HYBRID_CASE(ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED):
63393 				ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63394 				HYBRID_BREAK();
63395 			HYBRID_CASE(ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED):
63396 				ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63397 				HYBRID_BREAK();
63398 			HYBRID_CASE(ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED):
63399 				ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63400 				HYBRID_BREAK();
63401 			HYBRID_CASE(ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED):
63402 				ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63403 				HYBRID_BREAK();
63404 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED):
63405 				ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63406 				HYBRID_BREAK();
63407 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED):
63408 				ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63409 				HYBRID_BREAK();
63410 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED):
63411 				ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63412 				HYBRID_BREAK();
63413 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED):
63414 				ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63415 				HYBRID_BREAK();
63416 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED):
63417 				ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63418 				HYBRID_BREAK();
63419 			HYBRID_CASE(ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED):
63420 				ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63421 				HYBRID_BREAK();
63422 			HYBRID_CASE(ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED):
63423 				ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63424 				HYBRID_BREAK();
63425 			HYBRID_CASE(ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED):
63426 				ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63427 				HYBRID_BREAK();
63428 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED):
63429 				ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63430 				HYBRID_BREAK();
63431 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED):
63432 				ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63433 				HYBRID_BREAK();
63434 			HYBRID_CASE(ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED):
63435 				ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63436 				HYBRID_BREAK();
63437 			HYBRID_CASE(ZEND_ADD_SPEC_TMPVAR_CV):
63438 				ZEND_ADD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63439 				HYBRID_BREAK();
63440 			HYBRID_CASE(ZEND_SUB_SPEC_TMPVAR_CV):
63441 				ZEND_SUB_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63442 				HYBRID_BREAK();
63443 			HYBRID_CASE(ZEND_MUL_SPEC_TMPVAR_CV):
63444 				ZEND_MUL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63445 				HYBRID_BREAK();
63446 			HYBRID_CASE(ZEND_DIV_SPEC_TMPVAR_CV):
63447 				ZEND_DIV_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63448 				HYBRID_BREAK();
63449 			HYBRID_CASE(ZEND_MOD_SPEC_TMPVAR_CV):
63450 				ZEND_MOD_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63451 				HYBRID_BREAK();
63452 			HYBRID_CASE(ZEND_SL_SPEC_TMPVAR_CV):
63453 				ZEND_SL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63454 				HYBRID_BREAK();
63455 			HYBRID_CASE(ZEND_SR_SPEC_TMPVAR_CV):
63456 				ZEND_SR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63457 				HYBRID_BREAK();
63458 			HYBRID_CASE(ZEND_POW_SPEC_TMPVAR_CV):
63459 				ZEND_POW_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63460 				HYBRID_BREAK();
63461 			HYBRID_CASE(ZEND_CONCAT_SPEC_TMPVAR_CV):
63462 				ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63463 				HYBRID_BREAK();
63464 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_TMPVAR_CV):
63465 				ZEND_IS_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63466 				HYBRID_BREAK();
63467 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV):
63468 				ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63469 				HYBRID_BREAK();
63470 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_TMPVAR_CV):
63471 				ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63472 				HYBRID_BREAK();
63473 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV):
63474 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63475 				HYBRID_BREAK();
63476 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_TMPVAR_CV):
63477 				ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63478 				HYBRID_BREAK();
63479 			HYBRID_CASE(ZEND_BW_OR_SPEC_TMPVAR_CV):
63480 				ZEND_BW_OR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63481 				HYBRID_BREAK();
63482 			HYBRID_CASE(ZEND_BW_AND_SPEC_TMPVAR_CV):
63483 				ZEND_BW_AND_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63484 				HYBRID_BREAK();
63485 			HYBRID_CASE(ZEND_BW_XOR_SPEC_TMPVAR_CV):
63486 				ZEND_BW_XOR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63487 				HYBRID_BREAK();
63488 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_TMPVAR_CV):
63489 				ZEND_BOOL_XOR_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63490 				HYBRID_BREAK();
63491 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV):
63492 				ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63493 				HYBRID_BREAK();
63494 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV):
63495 				ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63496 				HYBRID_BREAK();
63497 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV):
63498 				ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63499 				HYBRID_BREAK();
63500 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_TMPVAR_CV):
63501 				ZEND_FETCH_LIST_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63502 				HYBRID_BREAK();
63503 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_TMPVAR_CV):
63504 				ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63505 				HYBRID_BREAK();
63506 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV):
63507 				ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63508 				HYBRID_BREAK();
63509 			HYBRID_CASE(ZEND_CASE_SPEC_TMPVAR_CV):
63510 				ZEND_CASE_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63511 				HYBRID_BREAK();
63512 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV):
63513 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63514 				HYBRID_BREAK();
63515 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV):
63516 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63517 				HYBRID_BREAK();
63518 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CV):
63519 				ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63520 				HYBRID_BREAK();
63521 			HYBRID_CASE(ZEND_ADD_SPEC_TMPVAR_TMPVAR):
63522 				ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63523 				HYBRID_BREAK();
63524 			HYBRID_CASE(ZEND_SUB_SPEC_TMPVAR_TMPVAR):
63525 				ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63526 				HYBRID_BREAK();
63527 			HYBRID_CASE(ZEND_MUL_SPEC_TMPVAR_TMPVAR):
63528 				ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63529 				HYBRID_BREAK();
63530 			HYBRID_CASE(ZEND_DIV_SPEC_TMPVAR_TMPVAR):
63531 				ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63532 				HYBRID_BREAK();
63533 			HYBRID_CASE(ZEND_MOD_SPEC_TMPVAR_TMPVAR):
63534 				ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63535 				HYBRID_BREAK();
63536 			HYBRID_CASE(ZEND_SL_SPEC_TMPVAR_TMPVAR):
63537 				ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63538 				HYBRID_BREAK();
63539 			HYBRID_CASE(ZEND_SR_SPEC_TMPVAR_TMPVAR):
63540 				ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63541 				HYBRID_BREAK();
63542 			HYBRID_CASE(ZEND_POW_SPEC_TMPVAR_TMPVAR):
63543 				ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63544 				HYBRID_BREAK();
63545 			HYBRID_CASE(ZEND_CONCAT_SPEC_TMPVAR_TMPVAR):
63546 				ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63547 				HYBRID_BREAK();
63548 			HYBRID_CASE(ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR):
63549 				ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63550 				HYBRID_BREAK();
63551 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR):
63552 				ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63553 				HYBRID_BREAK();
63554 			HYBRID_CASE(ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR):
63555 				ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63556 				HYBRID_BREAK();
63557 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR):
63558 				ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63559 				HYBRID_BREAK();
63560 			HYBRID_CASE(ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR):
63561 				ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63562 				HYBRID_BREAK();
63563 			HYBRID_CASE(ZEND_BW_OR_SPEC_TMPVAR_TMPVAR):
63564 				ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63565 				HYBRID_BREAK();
63566 			HYBRID_CASE(ZEND_BW_AND_SPEC_TMPVAR_TMPVAR):
63567 				ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63568 				HYBRID_BREAK();
63569 			HYBRID_CASE(ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR):
63570 				ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63571 				HYBRID_BREAK();
63572 			HYBRID_CASE(ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR):
63573 				ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63574 				HYBRID_BREAK();
63575 			HYBRID_CASE(ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR):
63576 				ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63577 				HYBRID_BREAK();
63578 			HYBRID_CASE(ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR):
63579 				ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63580 				HYBRID_BREAK();
63581 			HYBRID_CASE(ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR):
63582 				ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63583 				HYBRID_BREAK();
63584 			HYBRID_CASE(ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR):
63585 				ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63586 				HYBRID_BREAK();
63587 			HYBRID_CASE(ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR):
63588 				ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63589 				HYBRID_BREAK();
63590 			HYBRID_CASE(ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR):
63591 				ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63592 				HYBRID_BREAK();
63593 			HYBRID_CASE(ZEND_CASE_SPEC_TMPVAR_TMPVAR):
63594 				ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63595 				HYBRID_BREAK();
63596 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR):
63597 				ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63598 				HYBRID_BREAK();
63599 			HYBRID_CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR):
63600 				ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63601 				HYBRID_BREAK();
63602 			HYBRID_CASE(ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR):
63603 				ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63604 				HYBRID_BREAK();
63605 			HYBRID_CASE(ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV):
63606 				ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63607 				HYBRID_BREAK();
63608 			HYBRID_CASE(ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV):
63609 				ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63610 				HYBRID_BREAK();
63611 			HYBRID_CASE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST):
63612 				ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63613 				HYBRID_BREAK();
63614 			HYBRID_CASE(ZEND_SUB_LONG_SPEC_TMPVARCV_CONST):
63615 				ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63616 				HYBRID_BREAK();
63617 			HYBRID_CASE(ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST):
63618 				ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63619 				HYBRID_BREAK();
63620 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST):
63621 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63622 				HYBRID_BREAK();
63623 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ):
63624 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63625 				HYBRID_BREAK();
63626 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ):
63627 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63628 				HYBRID_BREAK();
63629 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST):
63630 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63631 				HYBRID_BREAK();
63632 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ):
63633 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63634 				HYBRID_BREAK();
63635 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ):
63636 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63637 				HYBRID_BREAK();
63638 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST):
63639 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63640 				HYBRID_BREAK();
63641 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ):
63642 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63643 				HYBRID_BREAK();
63644 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ):
63645 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63646 				HYBRID_BREAK();
63647 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST):
63648 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63649 				HYBRID_BREAK();
63650 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ):
63651 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63652 				HYBRID_BREAK();
63653 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ):
63654 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63655 				HYBRID_BREAK();
63656 			HYBRID_CASE(ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV):
63657 				ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63658 				HYBRID_BREAK();
63659 			HYBRID_CASE(ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV):
63660 				ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63661 				HYBRID_BREAK();
63662 			HYBRID_CASE(ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
63663 				ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63664 				HYBRID_BREAK();
63665 			HYBRID_CASE(ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV):
63666 				ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63667 				HYBRID_BREAK();
63668 			HYBRID_CASE(ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV):
63669 				ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63670 				HYBRID_BREAK();
63671 			HYBRID_CASE(ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
63672 				ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63673 				HYBRID_BREAK();
63674 			HYBRID_CASE(ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV):
63675 				ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63676 				HYBRID_BREAK();
63677 			HYBRID_CASE(ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV):
63678 				ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63679 				HYBRID_BREAK();
63680 			HYBRID_CASE(ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
63681 				ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63682 				HYBRID_BREAK();
63683 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV):
63684 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63685 				HYBRID_BREAK();
63686 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63687 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63688 				HYBRID_BREAK();
63689 			HYBRID_CASE(ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63690 				ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63691 				HYBRID_BREAK();
63692 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
63693 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63694 				HYBRID_BREAK();
63695 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63696 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63697 				HYBRID_BREAK();
63698 			HYBRID_CASE(ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63699 				ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63700 				HYBRID_BREAK();
63701 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV):
63702 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63703 				HYBRID_BREAK();
63704 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63705 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63706 				HYBRID_BREAK();
63707 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63708 				ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63709 				HYBRID_BREAK();
63710 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
63711 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63712 				HYBRID_BREAK();
63713 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63714 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63715 				HYBRID_BREAK();
63716 			HYBRID_CASE(ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63717 				ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63718 				HYBRID_BREAK();
63719 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV):
63720 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63721 				HYBRID_BREAK();
63722 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63723 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63724 				HYBRID_BREAK();
63725 			HYBRID_CASE(ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63726 				ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63727 				HYBRID_BREAK();
63728 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
63729 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63730 				HYBRID_BREAK();
63731 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63732 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63733 				HYBRID_BREAK();
63734 			HYBRID_CASE(ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63735 				ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63736 				HYBRID_BREAK();
63737 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV):
63738 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63739 				HYBRID_BREAK();
63740 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63741 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63742 				HYBRID_BREAK();
63743 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63744 				ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63745 				HYBRID_BREAK();
63746 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV):
63747 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63748 				HYBRID_BREAK();
63749 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ):
63750 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63751 				HYBRID_BREAK();
63752 			HYBRID_CASE(ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ):
63753 				ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
63754 				HYBRID_BREAK();
63755 			HYBRID_CASE(HYBRID_HALT):
63756 				execute_data = orig_execute_data;
63757 				opline = orig_opline;
63758 				return;
63759 			HYBRID_DEFAULT:
63760 				zend_error_noreturn(E_ERROR, "Invalid opcode %d/%d/%d.", OPLINE->opcode, OPLINE->op1_type, OPLINE->op2_type);
63761 				HYBRID_BREAK(); /* Never reached */
63762 #else
63763 #ifdef ZEND_VM_FP_GLOBAL_REG
63764 			execute_data = orig_execute_data;
63765 # ifdef ZEND_VM_IP_GLOBAL_REG
63766 			opline = orig_opline;
63767 # endif
63768 			return;
63769 #else
63770 			if (EXPECTED(ret > 0)) {
63771 				execute_data = EG(current_execute_data);
63772 				ZEND_VM_LOOP_INTERRUPT_CHECK();
63773 			} else {
63774 # ifdef ZEND_VM_IP_GLOBAL_REG
63775 				opline = orig_opline;
63776 # endif
63777 				return;
63778 			}
63779 #endif
63780 #endif
63781 		}
63782 
63783 	}
63784 	zend_error_noreturn(E_CORE_ERROR, "Arrived at end of main loop which shouldn't happen");
63785 }
63786 
63787 ZEND_API void zend_execute(zend_op_array *op_array, zval *return_value)
63788 {
63789 	zend_execute_data *execute_data;
63790 
63791 	if (EG(exception) != NULL) {
63792 		return;
63793 	}
63794 
63795 	execute_data = zend_vm_stack_push_call_frame(ZEND_CALL_TOP_CODE | ZEND_CALL_HAS_SYMBOL_TABLE,
63796 		(zend_function*)op_array, 0, zend_get_called_scope(EG(current_execute_data)), zend_get_this_object(EG(current_execute_data)));
63797 	if (EG(current_execute_data)) {
63798 		execute_data->symbol_table = zend_rebuild_symbol_table();
63799 	} else {
63800 		execute_data->symbol_table = &EG(symbol_table);
63801 	}
63802 	EX(prev_execute_data) = EG(current_execute_data);
63803 	i_init_code_execute_data(execute_data, op_array, return_value);
63804 	zend_execute_ex(execute_data);
63805 	zend_vm_stack_free_call_frame(execute_data);
63806 }
63807 
63808 
63809 void zend_init_opcodes_handlers(void)
63810 {
63811 	static const void *labels[] = {
63812 		ZEND_NOP_SPEC_HANDLER,
63813 		ZEND_ADD_SPEC_CONST_CONST_HANDLER,
63814 		ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER,
63815 		ZEND_ADD_SPEC_CONST_TMPVAR_HANDLER,
63816 		ZEND_NULL_HANDLER,
63817 		ZEND_ADD_SPEC_CONST_CV_HANDLER,
63818 		ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER,
63819 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
63820 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
63821 		ZEND_NULL_HANDLER,
63822 		ZEND_ADD_SPEC_TMPVAR_CV_HANDLER,
63823 		ZEND_ADD_SPEC_TMPVAR_CONST_HANDLER,
63824 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
63825 		ZEND_ADD_SPEC_TMPVAR_TMPVAR_HANDLER,
63826 		ZEND_NULL_HANDLER,
63827 		ZEND_ADD_SPEC_TMPVAR_CV_HANDLER,
63828 		ZEND_NULL_HANDLER,
63829 		ZEND_NULL_HANDLER,
63830 		ZEND_NULL_HANDLER,
63831 		ZEND_NULL_HANDLER,
63832 		ZEND_NULL_HANDLER,
63833 		ZEND_ADD_SPEC_CV_CONST_HANDLER,
63834 		ZEND_ADD_SPEC_CV_TMPVAR_HANDLER,
63835 		ZEND_ADD_SPEC_CV_TMPVAR_HANDLER,
63836 		ZEND_NULL_HANDLER,
63837 		ZEND_ADD_SPEC_CV_CV_HANDLER,
63838 		ZEND_SUB_SPEC_CONST_CONST_HANDLER,
63839 		ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER,
63840 		ZEND_SUB_SPEC_CONST_TMPVAR_HANDLER,
63841 		ZEND_NULL_HANDLER,
63842 		ZEND_SUB_SPEC_CONST_CV_HANDLER,
63843 		ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER,
63844 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
63845 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
63846 		ZEND_NULL_HANDLER,
63847 		ZEND_SUB_SPEC_TMPVAR_CV_HANDLER,
63848 		ZEND_SUB_SPEC_TMPVAR_CONST_HANDLER,
63849 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
63850 		ZEND_SUB_SPEC_TMPVAR_TMPVAR_HANDLER,
63851 		ZEND_NULL_HANDLER,
63852 		ZEND_SUB_SPEC_TMPVAR_CV_HANDLER,
63853 		ZEND_NULL_HANDLER,
63854 		ZEND_NULL_HANDLER,
63855 		ZEND_NULL_HANDLER,
63856 		ZEND_NULL_HANDLER,
63857 		ZEND_NULL_HANDLER,
63858 		ZEND_SUB_SPEC_CV_CONST_HANDLER,
63859 		ZEND_SUB_SPEC_CV_TMPVAR_HANDLER,
63860 		ZEND_SUB_SPEC_CV_TMPVAR_HANDLER,
63861 		ZEND_NULL_HANDLER,
63862 		ZEND_SUB_SPEC_CV_CV_HANDLER,
63863 		ZEND_MUL_SPEC_CONST_CONST_HANDLER,
63864 		ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER,
63865 		ZEND_MUL_SPEC_CONST_TMPVAR_HANDLER,
63866 		ZEND_NULL_HANDLER,
63867 		ZEND_MUL_SPEC_CONST_CV_HANDLER,
63868 		ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER,
63869 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
63870 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
63871 		ZEND_NULL_HANDLER,
63872 		ZEND_MUL_SPEC_TMPVAR_CV_HANDLER,
63873 		ZEND_MUL_SPEC_TMPVAR_CONST_HANDLER,
63874 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
63875 		ZEND_MUL_SPEC_TMPVAR_TMPVAR_HANDLER,
63876 		ZEND_NULL_HANDLER,
63877 		ZEND_MUL_SPEC_TMPVAR_CV_HANDLER,
63878 		ZEND_NULL_HANDLER,
63879 		ZEND_NULL_HANDLER,
63880 		ZEND_NULL_HANDLER,
63881 		ZEND_NULL_HANDLER,
63882 		ZEND_NULL_HANDLER,
63883 		ZEND_MUL_SPEC_CV_CONST_HANDLER,
63884 		ZEND_MUL_SPEC_CV_TMPVAR_HANDLER,
63885 		ZEND_MUL_SPEC_CV_TMPVAR_HANDLER,
63886 		ZEND_NULL_HANDLER,
63887 		ZEND_MUL_SPEC_CV_CV_HANDLER,
63888 		ZEND_DIV_SPEC_CONST_CONST_HANDLER,
63889 		ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER,
63890 		ZEND_DIV_SPEC_CONST_TMPVAR_HANDLER,
63891 		ZEND_NULL_HANDLER,
63892 		ZEND_DIV_SPEC_CONST_CV_HANDLER,
63893 		ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER,
63894 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
63895 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
63896 		ZEND_NULL_HANDLER,
63897 		ZEND_DIV_SPEC_TMPVAR_CV_HANDLER,
63898 		ZEND_DIV_SPEC_TMPVAR_CONST_HANDLER,
63899 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
63900 		ZEND_DIV_SPEC_TMPVAR_TMPVAR_HANDLER,
63901 		ZEND_NULL_HANDLER,
63902 		ZEND_DIV_SPEC_TMPVAR_CV_HANDLER,
63903 		ZEND_NULL_HANDLER,
63904 		ZEND_NULL_HANDLER,
63905 		ZEND_NULL_HANDLER,
63906 		ZEND_NULL_HANDLER,
63907 		ZEND_NULL_HANDLER,
63908 		ZEND_DIV_SPEC_CV_CONST_HANDLER,
63909 		ZEND_DIV_SPEC_CV_TMPVAR_HANDLER,
63910 		ZEND_DIV_SPEC_CV_TMPVAR_HANDLER,
63911 		ZEND_NULL_HANDLER,
63912 		ZEND_DIV_SPEC_CV_CV_HANDLER,
63913 		ZEND_MOD_SPEC_CONST_CONST_HANDLER,
63914 		ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER,
63915 		ZEND_MOD_SPEC_CONST_TMPVAR_HANDLER,
63916 		ZEND_NULL_HANDLER,
63917 		ZEND_MOD_SPEC_CONST_CV_HANDLER,
63918 		ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER,
63919 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
63920 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
63921 		ZEND_NULL_HANDLER,
63922 		ZEND_MOD_SPEC_TMPVAR_CV_HANDLER,
63923 		ZEND_MOD_SPEC_TMPVAR_CONST_HANDLER,
63924 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
63925 		ZEND_MOD_SPEC_TMPVAR_TMPVAR_HANDLER,
63926 		ZEND_NULL_HANDLER,
63927 		ZEND_MOD_SPEC_TMPVAR_CV_HANDLER,
63928 		ZEND_NULL_HANDLER,
63929 		ZEND_NULL_HANDLER,
63930 		ZEND_NULL_HANDLER,
63931 		ZEND_NULL_HANDLER,
63932 		ZEND_NULL_HANDLER,
63933 		ZEND_MOD_SPEC_CV_CONST_HANDLER,
63934 		ZEND_MOD_SPEC_CV_TMPVAR_HANDLER,
63935 		ZEND_MOD_SPEC_CV_TMPVAR_HANDLER,
63936 		ZEND_NULL_HANDLER,
63937 		ZEND_MOD_SPEC_CV_CV_HANDLER,
63938 		ZEND_SL_SPEC_CONST_CONST_HANDLER,
63939 		ZEND_SL_SPEC_CONST_TMPVAR_HANDLER,
63940 		ZEND_SL_SPEC_CONST_TMPVAR_HANDLER,
63941 		ZEND_NULL_HANDLER,
63942 		ZEND_SL_SPEC_CONST_CV_HANDLER,
63943 		ZEND_SL_SPEC_TMPVAR_CONST_HANDLER,
63944 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
63945 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
63946 		ZEND_NULL_HANDLER,
63947 		ZEND_SL_SPEC_TMPVAR_CV_HANDLER,
63948 		ZEND_SL_SPEC_TMPVAR_CONST_HANDLER,
63949 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
63950 		ZEND_SL_SPEC_TMPVAR_TMPVAR_HANDLER,
63951 		ZEND_NULL_HANDLER,
63952 		ZEND_SL_SPEC_TMPVAR_CV_HANDLER,
63953 		ZEND_NULL_HANDLER,
63954 		ZEND_NULL_HANDLER,
63955 		ZEND_NULL_HANDLER,
63956 		ZEND_NULL_HANDLER,
63957 		ZEND_NULL_HANDLER,
63958 		ZEND_SL_SPEC_CV_CONST_HANDLER,
63959 		ZEND_SL_SPEC_CV_TMPVAR_HANDLER,
63960 		ZEND_SL_SPEC_CV_TMPVAR_HANDLER,
63961 		ZEND_NULL_HANDLER,
63962 		ZEND_SL_SPEC_CV_CV_HANDLER,
63963 		ZEND_SR_SPEC_CONST_CONST_HANDLER,
63964 		ZEND_SR_SPEC_CONST_TMPVAR_HANDLER,
63965 		ZEND_SR_SPEC_CONST_TMPVAR_HANDLER,
63966 		ZEND_NULL_HANDLER,
63967 		ZEND_SR_SPEC_CONST_CV_HANDLER,
63968 		ZEND_SR_SPEC_TMPVAR_CONST_HANDLER,
63969 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
63970 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
63971 		ZEND_NULL_HANDLER,
63972 		ZEND_SR_SPEC_TMPVAR_CV_HANDLER,
63973 		ZEND_SR_SPEC_TMPVAR_CONST_HANDLER,
63974 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
63975 		ZEND_SR_SPEC_TMPVAR_TMPVAR_HANDLER,
63976 		ZEND_NULL_HANDLER,
63977 		ZEND_SR_SPEC_TMPVAR_CV_HANDLER,
63978 		ZEND_NULL_HANDLER,
63979 		ZEND_NULL_HANDLER,
63980 		ZEND_NULL_HANDLER,
63981 		ZEND_NULL_HANDLER,
63982 		ZEND_NULL_HANDLER,
63983 		ZEND_SR_SPEC_CV_CONST_HANDLER,
63984 		ZEND_SR_SPEC_CV_TMPVAR_HANDLER,
63985 		ZEND_SR_SPEC_CV_TMPVAR_HANDLER,
63986 		ZEND_NULL_HANDLER,
63987 		ZEND_SR_SPEC_CV_CV_HANDLER,
63988 		ZEND_CONCAT_SPEC_CONST_CONST_HANDLER,
63989 		ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
63990 		ZEND_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
63991 		ZEND_NULL_HANDLER,
63992 		ZEND_CONCAT_SPEC_CONST_CV_HANDLER,
63993 		ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
63994 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
63995 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
63996 		ZEND_NULL_HANDLER,
63997 		ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER,
63998 		ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
63999 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
64000 		ZEND_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
64001 		ZEND_NULL_HANDLER,
64002 		ZEND_CONCAT_SPEC_TMPVAR_CV_HANDLER,
64003 		ZEND_NULL_HANDLER,
64004 		ZEND_NULL_HANDLER,
64005 		ZEND_NULL_HANDLER,
64006 		ZEND_NULL_HANDLER,
64007 		ZEND_NULL_HANDLER,
64008 		ZEND_CONCAT_SPEC_CV_CONST_HANDLER,
64009 		ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER,
64010 		ZEND_CONCAT_SPEC_CV_TMPVAR_HANDLER,
64011 		ZEND_NULL_HANDLER,
64012 		ZEND_CONCAT_SPEC_CV_CV_HANDLER,
64013 		ZEND_BW_OR_SPEC_CONST_CONST_HANDLER,
64014 		ZEND_BW_OR_SPEC_CONST_TMPVAR_HANDLER,
64015 		ZEND_BW_OR_SPEC_CONST_TMPVAR_HANDLER,
64016 		ZEND_NULL_HANDLER,
64017 		ZEND_BW_OR_SPEC_CONST_CV_HANDLER,
64018 		ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER,
64019 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
64020 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
64021 		ZEND_NULL_HANDLER,
64022 		ZEND_BW_OR_SPEC_TMPVAR_CV_HANDLER,
64023 		ZEND_BW_OR_SPEC_TMPVAR_CONST_HANDLER,
64024 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
64025 		ZEND_BW_OR_SPEC_TMPVAR_TMPVAR_HANDLER,
64026 		ZEND_NULL_HANDLER,
64027 		ZEND_BW_OR_SPEC_TMPVAR_CV_HANDLER,
64028 		ZEND_NULL_HANDLER,
64029 		ZEND_NULL_HANDLER,
64030 		ZEND_NULL_HANDLER,
64031 		ZEND_NULL_HANDLER,
64032 		ZEND_NULL_HANDLER,
64033 		ZEND_BW_OR_SPEC_CV_CONST_HANDLER,
64034 		ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER,
64035 		ZEND_BW_OR_SPEC_CV_TMPVAR_HANDLER,
64036 		ZEND_NULL_HANDLER,
64037 		ZEND_BW_OR_SPEC_CV_CV_HANDLER,
64038 		ZEND_BW_AND_SPEC_CONST_CONST_HANDLER,
64039 		ZEND_BW_AND_SPEC_CONST_TMPVAR_HANDLER,
64040 		ZEND_BW_AND_SPEC_CONST_TMPVAR_HANDLER,
64041 		ZEND_NULL_HANDLER,
64042 		ZEND_BW_AND_SPEC_CONST_CV_HANDLER,
64043 		ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER,
64044 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
64045 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
64046 		ZEND_NULL_HANDLER,
64047 		ZEND_BW_AND_SPEC_TMPVAR_CV_HANDLER,
64048 		ZEND_BW_AND_SPEC_TMPVAR_CONST_HANDLER,
64049 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
64050 		ZEND_BW_AND_SPEC_TMPVAR_TMPVAR_HANDLER,
64051 		ZEND_NULL_HANDLER,
64052 		ZEND_BW_AND_SPEC_TMPVAR_CV_HANDLER,
64053 		ZEND_NULL_HANDLER,
64054 		ZEND_NULL_HANDLER,
64055 		ZEND_NULL_HANDLER,
64056 		ZEND_NULL_HANDLER,
64057 		ZEND_NULL_HANDLER,
64058 		ZEND_BW_AND_SPEC_CV_CONST_HANDLER,
64059 		ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER,
64060 		ZEND_BW_AND_SPEC_CV_TMPVAR_HANDLER,
64061 		ZEND_NULL_HANDLER,
64062 		ZEND_BW_AND_SPEC_CV_CV_HANDLER,
64063 		ZEND_BW_XOR_SPEC_CONST_CONST_HANDLER,
64064 		ZEND_BW_XOR_SPEC_CONST_TMPVAR_HANDLER,
64065 		ZEND_BW_XOR_SPEC_CONST_TMPVAR_HANDLER,
64066 		ZEND_NULL_HANDLER,
64067 		ZEND_BW_XOR_SPEC_CONST_CV_HANDLER,
64068 		ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER,
64069 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64070 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64071 		ZEND_NULL_HANDLER,
64072 		ZEND_BW_XOR_SPEC_TMPVAR_CV_HANDLER,
64073 		ZEND_BW_XOR_SPEC_TMPVAR_CONST_HANDLER,
64074 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64075 		ZEND_BW_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64076 		ZEND_NULL_HANDLER,
64077 		ZEND_BW_XOR_SPEC_TMPVAR_CV_HANDLER,
64078 		ZEND_NULL_HANDLER,
64079 		ZEND_NULL_HANDLER,
64080 		ZEND_NULL_HANDLER,
64081 		ZEND_NULL_HANDLER,
64082 		ZEND_NULL_HANDLER,
64083 		ZEND_BW_XOR_SPEC_CV_CONST_HANDLER,
64084 		ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
64085 		ZEND_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
64086 		ZEND_NULL_HANDLER,
64087 		ZEND_BW_XOR_SPEC_CV_CV_HANDLER,
64088 		ZEND_BW_NOT_SPEC_CONST_HANDLER,
64089 		ZEND_BW_NOT_SPEC_TMPVAR_HANDLER,
64090 		ZEND_BW_NOT_SPEC_TMPVAR_HANDLER,
64091 		ZEND_NULL_HANDLER,
64092 		ZEND_BW_NOT_SPEC_CV_HANDLER,
64093 		ZEND_BOOL_NOT_SPEC_CONST_HANDLER,
64094 		ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER,
64095 		ZEND_BOOL_NOT_SPEC_TMPVAR_HANDLER,
64096 		ZEND_NULL_HANDLER,
64097 		ZEND_BOOL_NOT_SPEC_CV_HANDLER,
64098 		ZEND_BOOL_XOR_SPEC_CONST_CONST_HANDLER,
64099 		ZEND_BOOL_XOR_SPEC_CONST_TMPVAR_HANDLER,
64100 		ZEND_BOOL_XOR_SPEC_CONST_TMPVAR_HANDLER,
64101 		ZEND_NULL_HANDLER,
64102 		ZEND_BOOL_XOR_SPEC_CONST_CV_HANDLER,
64103 		ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER,
64104 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64105 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64106 		ZEND_NULL_HANDLER,
64107 		ZEND_BOOL_XOR_SPEC_TMPVAR_CV_HANDLER,
64108 		ZEND_BOOL_XOR_SPEC_TMPVAR_CONST_HANDLER,
64109 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64110 		ZEND_BOOL_XOR_SPEC_TMPVAR_TMPVAR_HANDLER,
64111 		ZEND_NULL_HANDLER,
64112 		ZEND_BOOL_XOR_SPEC_TMPVAR_CV_HANDLER,
64113 		ZEND_NULL_HANDLER,
64114 		ZEND_NULL_HANDLER,
64115 		ZEND_NULL_HANDLER,
64116 		ZEND_NULL_HANDLER,
64117 		ZEND_NULL_HANDLER,
64118 		ZEND_BOOL_XOR_SPEC_CV_CONST_HANDLER,
64119 		ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER,
64120 		ZEND_BOOL_XOR_SPEC_CV_TMPVAR_HANDLER,
64121 		ZEND_NULL_HANDLER,
64122 		ZEND_BOOL_XOR_SPEC_CV_CV_HANDLER,
64123 		ZEND_IS_IDENTICAL_SPEC_CONST_CONST_HANDLER,
64124 		ZEND_IS_IDENTICAL_SPEC_CONST_TMP_HANDLER,
64125 		ZEND_IS_IDENTICAL_SPEC_CONST_VAR_HANDLER,
64126 		ZEND_NULL_HANDLER,
64127 		ZEND_IS_IDENTICAL_SPEC_CONST_CV_HANDLER,
64128 		ZEND_IS_IDENTICAL_SPEC_TMP_CONST_HANDLER,
64129 		ZEND_IS_IDENTICAL_SPEC_TMP_TMP_HANDLER,
64130 		ZEND_IS_IDENTICAL_SPEC_TMP_VAR_HANDLER,
64131 		ZEND_NULL_HANDLER,
64132 		ZEND_IS_IDENTICAL_SPEC_TMP_CV_HANDLER,
64133 		ZEND_IS_IDENTICAL_SPEC_VAR_CONST_HANDLER,
64134 		ZEND_IS_IDENTICAL_SPEC_VAR_TMP_HANDLER,
64135 		ZEND_IS_IDENTICAL_SPEC_VAR_VAR_HANDLER,
64136 		ZEND_NULL_HANDLER,
64137 		ZEND_IS_IDENTICAL_SPEC_VAR_CV_HANDLER,
64138 		ZEND_NULL_HANDLER,
64139 		ZEND_NULL_HANDLER,
64140 		ZEND_NULL_HANDLER,
64141 		ZEND_NULL_HANDLER,
64142 		ZEND_NULL_HANDLER,
64143 		ZEND_IS_IDENTICAL_SPEC_CV_CONST_HANDLER,
64144 		ZEND_IS_IDENTICAL_SPEC_CV_TMP_HANDLER,
64145 		ZEND_IS_IDENTICAL_SPEC_CV_VAR_HANDLER,
64146 		ZEND_NULL_HANDLER,
64147 		ZEND_IS_IDENTICAL_SPEC_CV_CV_HANDLER,
64148 		ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CONST_HANDLER,
64149 		ZEND_IS_NOT_IDENTICAL_SPEC_CONST_TMP_HANDLER,
64150 		ZEND_IS_NOT_IDENTICAL_SPEC_CONST_VAR_HANDLER,
64151 		ZEND_NULL_HANDLER,
64152 		ZEND_IS_NOT_IDENTICAL_SPEC_CONST_CV_HANDLER,
64153 		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CONST_HANDLER,
64154 		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_TMP_HANDLER,
64155 		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_VAR_HANDLER,
64156 		ZEND_NULL_HANDLER,
64157 		ZEND_IS_NOT_IDENTICAL_SPEC_TMP_CV_HANDLER,
64158 		ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CONST_HANDLER,
64159 		ZEND_IS_NOT_IDENTICAL_SPEC_VAR_TMP_HANDLER,
64160 		ZEND_IS_NOT_IDENTICAL_SPEC_VAR_VAR_HANDLER,
64161 		ZEND_NULL_HANDLER,
64162 		ZEND_IS_NOT_IDENTICAL_SPEC_VAR_CV_HANDLER,
64163 		ZEND_NULL_HANDLER,
64164 		ZEND_NULL_HANDLER,
64165 		ZEND_NULL_HANDLER,
64166 		ZEND_NULL_HANDLER,
64167 		ZEND_NULL_HANDLER,
64168 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CONST_HANDLER,
64169 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_TMP_HANDLER,
64170 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_VAR_HANDLER,
64171 		ZEND_NULL_HANDLER,
64172 		ZEND_IS_NOT_IDENTICAL_SPEC_CV_CV_HANDLER,
64173 		ZEND_IS_EQUAL_SPEC_CONST_CONST_HANDLER,
64174 		ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
64175 		ZEND_IS_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
64176 		ZEND_NULL_HANDLER,
64177 		ZEND_IS_EQUAL_SPEC_CONST_CV_HANDLER,
64178 		ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
64179 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64180 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64181 		ZEND_NULL_HANDLER,
64182 		ZEND_IS_EQUAL_SPEC_TMPVAR_CV_HANDLER,
64183 		ZEND_IS_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
64184 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64185 		ZEND_IS_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64186 		ZEND_NULL_HANDLER,
64187 		ZEND_IS_EQUAL_SPEC_TMPVAR_CV_HANDLER,
64188 		ZEND_NULL_HANDLER,
64189 		ZEND_NULL_HANDLER,
64190 		ZEND_NULL_HANDLER,
64191 		ZEND_NULL_HANDLER,
64192 		ZEND_NULL_HANDLER,
64193 		ZEND_IS_EQUAL_SPEC_CV_CONST_HANDLER,
64194 		ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER,
64195 		ZEND_IS_EQUAL_SPEC_CV_TMPVAR_HANDLER,
64196 		ZEND_NULL_HANDLER,
64197 		ZEND_IS_EQUAL_SPEC_CV_CV_HANDLER,
64198 		ZEND_IS_NOT_EQUAL_SPEC_CONST_CONST_HANDLER,
64199 		ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
64200 		ZEND_IS_NOT_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
64201 		ZEND_NULL_HANDLER,
64202 		ZEND_IS_NOT_EQUAL_SPEC_CONST_CV_HANDLER,
64203 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
64204 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64205 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64206 		ZEND_NULL_HANDLER,
64207 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_HANDLER,
64208 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
64209 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64210 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64211 		ZEND_NULL_HANDLER,
64212 		ZEND_IS_NOT_EQUAL_SPEC_TMPVAR_CV_HANDLER,
64213 		ZEND_NULL_HANDLER,
64214 		ZEND_NULL_HANDLER,
64215 		ZEND_NULL_HANDLER,
64216 		ZEND_NULL_HANDLER,
64217 		ZEND_NULL_HANDLER,
64218 		ZEND_IS_NOT_EQUAL_SPEC_CV_CONST_HANDLER,
64219 		ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER,
64220 		ZEND_IS_NOT_EQUAL_SPEC_CV_TMPVAR_HANDLER,
64221 		ZEND_NULL_HANDLER,
64222 		ZEND_IS_NOT_EQUAL_SPEC_CV_CV_HANDLER,
64223 		ZEND_IS_SMALLER_SPEC_CONST_CONST_HANDLER,
64224 		ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER,
64225 		ZEND_IS_SMALLER_SPEC_CONST_TMPVAR_HANDLER,
64226 		ZEND_NULL_HANDLER,
64227 		ZEND_IS_SMALLER_SPEC_CONST_CV_HANDLER,
64228 		ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER,
64229 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
64230 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
64231 		ZEND_NULL_HANDLER,
64232 		ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER,
64233 		ZEND_IS_SMALLER_SPEC_TMPVAR_CONST_HANDLER,
64234 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
64235 		ZEND_IS_SMALLER_SPEC_TMPVAR_TMPVAR_HANDLER,
64236 		ZEND_NULL_HANDLER,
64237 		ZEND_IS_SMALLER_SPEC_TMPVAR_CV_HANDLER,
64238 		ZEND_NULL_HANDLER,
64239 		ZEND_NULL_HANDLER,
64240 		ZEND_NULL_HANDLER,
64241 		ZEND_NULL_HANDLER,
64242 		ZEND_NULL_HANDLER,
64243 		ZEND_IS_SMALLER_SPEC_CV_CONST_HANDLER,
64244 		ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER,
64245 		ZEND_IS_SMALLER_SPEC_CV_TMPVAR_HANDLER,
64246 		ZEND_NULL_HANDLER,
64247 		ZEND_IS_SMALLER_SPEC_CV_CV_HANDLER,
64248 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CONST_HANDLER,
64249 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
64250 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_TMPVAR_HANDLER,
64251 		ZEND_NULL_HANDLER,
64252 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CONST_CV_HANDLER,
64253 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
64254 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64255 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64256 		ZEND_NULL_HANDLER,
64257 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER,
64258 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CONST_HANDLER,
64259 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64260 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_TMPVAR_HANDLER,
64261 		ZEND_NULL_HANDLER,
64262 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_TMPVAR_CV_HANDLER,
64263 		ZEND_NULL_HANDLER,
64264 		ZEND_NULL_HANDLER,
64265 		ZEND_NULL_HANDLER,
64266 		ZEND_NULL_HANDLER,
64267 		ZEND_NULL_HANDLER,
64268 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CONST_HANDLER,
64269 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER,
64270 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_TMPVAR_HANDLER,
64271 		ZEND_NULL_HANDLER,
64272 		ZEND_IS_SMALLER_OR_EQUAL_SPEC_CV_CV_HANDLER,
64273 		ZEND_CAST_SPEC_CONST_HANDLER,
64274 		ZEND_CAST_SPEC_TMP_HANDLER,
64275 		ZEND_CAST_SPEC_VAR_HANDLER,
64276 		ZEND_NULL_HANDLER,
64277 		ZEND_CAST_SPEC_CV_HANDLER,
64278 		ZEND_QM_ASSIGN_SPEC_CONST_HANDLER,
64279 		ZEND_QM_ASSIGN_SPEC_TMP_HANDLER,
64280 		ZEND_QM_ASSIGN_SPEC_VAR_HANDLER,
64281 		ZEND_NULL_HANDLER,
64282 		ZEND_QM_ASSIGN_SPEC_CV_HANDLER,
64283 		ZEND_NULL_HANDLER,
64284 		ZEND_NULL_HANDLER,
64285 		ZEND_NULL_HANDLER,
64286 		ZEND_NULL_HANDLER,
64287 		ZEND_NULL_HANDLER,
64288 		ZEND_NULL_HANDLER,
64289 		ZEND_NULL_HANDLER,
64290 		ZEND_NULL_HANDLER,
64291 		ZEND_NULL_HANDLER,
64292 		ZEND_NULL_HANDLER,
64293 		ZEND_NULL_HANDLER,
64294 		ZEND_NULL_HANDLER,
64295 		ZEND_NULL_HANDLER,
64296 		ZEND_NULL_HANDLER,
64297 		ZEND_NULL_HANDLER,
64298 		ZEND_NULL_HANDLER,
64299 		ZEND_NULL_HANDLER,
64300 		ZEND_NULL_HANDLER,
64301 		ZEND_NULL_HANDLER,
64302 		ZEND_NULL_HANDLER,
64303 		ZEND_NULL_HANDLER,
64304 		ZEND_NULL_HANDLER,
64305 		ZEND_NULL_HANDLER,
64306 		ZEND_NULL_HANDLER,
64307 		ZEND_NULL_HANDLER,
64308 		ZEND_NULL_HANDLER,
64309 		ZEND_NULL_HANDLER,
64310 		ZEND_NULL_HANDLER,
64311 		ZEND_NULL_HANDLER,
64312 		ZEND_NULL_HANDLER,
64313 		ZEND_ASSIGN_ADD_SPEC_VAR_CONST_HANDLER,
64314 		ZEND_ASSIGN_ADD_SPEC_VAR_CONST_DIM_HANDLER,
64315 		ZEND_ASSIGN_ADD_SPEC_VAR_CONST_OBJ_HANDLER,
64316 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER,
64317 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER,
64318 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64319 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_HANDLER,
64320 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_DIM_HANDLER,
64321 		ZEND_ASSIGN_ADD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64322 		ZEND_NULL_HANDLER,
64323 		ZEND_ASSIGN_ADD_SPEC_VAR_UNUSED_DIM_HANDLER,
64324 		ZEND_NULL_HANDLER,
64325 		ZEND_ASSIGN_ADD_SPEC_VAR_CV_HANDLER,
64326 		ZEND_ASSIGN_ADD_SPEC_VAR_CV_DIM_HANDLER,
64327 		ZEND_ASSIGN_ADD_SPEC_VAR_CV_OBJ_HANDLER,
64328 		ZEND_NULL_HANDLER,
64329 		ZEND_NULL_HANDLER,
64330 		ZEND_ASSIGN_ADD_SPEC_UNUSED_CONST_OBJ_HANDLER,
64331 		ZEND_NULL_HANDLER,
64332 		ZEND_NULL_HANDLER,
64333 		ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64334 		ZEND_NULL_HANDLER,
64335 		ZEND_NULL_HANDLER,
64336 		ZEND_ASSIGN_ADD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64337 		ZEND_NULL_HANDLER,
64338 		ZEND_NULL_HANDLER,
64339 		ZEND_NULL_HANDLER,
64340 		ZEND_NULL_HANDLER,
64341 		ZEND_NULL_HANDLER,
64342 		ZEND_ASSIGN_ADD_SPEC_UNUSED_CV_OBJ_HANDLER,
64343 		ZEND_ASSIGN_ADD_SPEC_CV_CONST_HANDLER,
64344 		ZEND_ASSIGN_ADD_SPEC_CV_CONST_DIM_HANDLER,
64345 		ZEND_ASSIGN_ADD_SPEC_CV_CONST_OBJ_HANDLER,
64346 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER,
64347 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER,
64348 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER,
64349 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_HANDLER,
64350 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_DIM_HANDLER,
64351 		ZEND_ASSIGN_ADD_SPEC_CV_TMPVAR_OBJ_HANDLER,
64352 		ZEND_NULL_HANDLER,
64353 		ZEND_ASSIGN_ADD_SPEC_CV_UNUSED_DIM_HANDLER,
64354 		ZEND_NULL_HANDLER,
64355 		ZEND_ASSIGN_ADD_SPEC_CV_CV_HANDLER,
64356 		ZEND_ASSIGN_ADD_SPEC_CV_CV_DIM_HANDLER,
64357 		ZEND_ASSIGN_ADD_SPEC_CV_CV_OBJ_HANDLER,
64358 		ZEND_NULL_HANDLER,
64359 		ZEND_NULL_HANDLER,
64360 		ZEND_NULL_HANDLER,
64361 		ZEND_NULL_HANDLER,
64362 		ZEND_NULL_HANDLER,
64363 		ZEND_NULL_HANDLER,
64364 		ZEND_NULL_HANDLER,
64365 		ZEND_NULL_HANDLER,
64366 		ZEND_NULL_HANDLER,
64367 		ZEND_NULL_HANDLER,
64368 		ZEND_NULL_HANDLER,
64369 		ZEND_NULL_HANDLER,
64370 		ZEND_NULL_HANDLER,
64371 		ZEND_NULL_HANDLER,
64372 		ZEND_NULL_HANDLER,
64373 		ZEND_NULL_HANDLER,
64374 		ZEND_NULL_HANDLER,
64375 		ZEND_NULL_HANDLER,
64376 		ZEND_NULL_HANDLER,
64377 		ZEND_NULL_HANDLER,
64378 		ZEND_NULL_HANDLER,
64379 		ZEND_NULL_HANDLER,
64380 		ZEND_NULL_HANDLER,
64381 		ZEND_NULL_HANDLER,
64382 		ZEND_NULL_HANDLER,
64383 		ZEND_NULL_HANDLER,
64384 		ZEND_NULL_HANDLER,
64385 		ZEND_NULL_HANDLER,
64386 		ZEND_NULL_HANDLER,
64387 		ZEND_NULL_HANDLER,
64388 		ZEND_ASSIGN_SUB_SPEC_VAR_CONST_HANDLER,
64389 		ZEND_ASSIGN_SUB_SPEC_VAR_CONST_DIM_HANDLER,
64390 		ZEND_ASSIGN_SUB_SPEC_VAR_CONST_OBJ_HANDLER,
64391 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER,
64392 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER,
64393 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64394 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_HANDLER,
64395 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_DIM_HANDLER,
64396 		ZEND_ASSIGN_SUB_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64397 		ZEND_NULL_HANDLER,
64398 		ZEND_ASSIGN_SUB_SPEC_VAR_UNUSED_DIM_HANDLER,
64399 		ZEND_NULL_HANDLER,
64400 		ZEND_ASSIGN_SUB_SPEC_VAR_CV_HANDLER,
64401 		ZEND_ASSIGN_SUB_SPEC_VAR_CV_DIM_HANDLER,
64402 		ZEND_ASSIGN_SUB_SPEC_VAR_CV_OBJ_HANDLER,
64403 		ZEND_NULL_HANDLER,
64404 		ZEND_NULL_HANDLER,
64405 		ZEND_ASSIGN_SUB_SPEC_UNUSED_CONST_OBJ_HANDLER,
64406 		ZEND_NULL_HANDLER,
64407 		ZEND_NULL_HANDLER,
64408 		ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64409 		ZEND_NULL_HANDLER,
64410 		ZEND_NULL_HANDLER,
64411 		ZEND_ASSIGN_SUB_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64412 		ZEND_NULL_HANDLER,
64413 		ZEND_NULL_HANDLER,
64414 		ZEND_NULL_HANDLER,
64415 		ZEND_NULL_HANDLER,
64416 		ZEND_NULL_HANDLER,
64417 		ZEND_ASSIGN_SUB_SPEC_UNUSED_CV_OBJ_HANDLER,
64418 		ZEND_ASSIGN_SUB_SPEC_CV_CONST_HANDLER,
64419 		ZEND_ASSIGN_SUB_SPEC_CV_CONST_DIM_HANDLER,
64420 		ZEND_ASSIGN_SUB_SPEC_CV_CONST_OBJ_HANDLER,
64421 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER,
64422 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER,
64423 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER,
64424 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_HANDLER,
64425 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_DIM_HANDLER,
64426 		ZEND_ASSIGN_SUB_SPEC_CV_TMPVAR_OBJ_HANDLER,
64427 		ZEND_NULL_HANDLER,
64428 		ZEND_ASSIGN_SUB_SPEC_CV_UNUSED_DIM_HANDLER,
64429 		ZEND_NULL_HANDLER,
64430 		ZEND_ASSIGN_SUB_SPEC_CV_CV_HANDLER,
64431 		ZEND_ASSIGN_SUB_SPEC_CV_CV_DIM_HANDLER,
64432 		ZEND_ASSIGN_SUB_SPEC_CV_CV_OBJ_HANDLER,
64433 		ZEND_NULL_HANDLER,
64434 		ZEND_NULL_HANDLER,
64435 		ZEND_NULL_HANDLER,
64436 		ZEND_NULL_HANDLER,
64437 		ZEND_NULL_HANDLER,
64438 		ZEND_NULL_HANDLER,
64439 		ZEND_NULL_HANDLER,
64440 		ZEND_NULL_HANDLER,
64441 		ZEND_NULL_HANDLER,
64442 		ZEND_NULL_HANDLER,
64443 		ZEND_NULL_HANDLER,
64444 		ZEND_NULL_HANDLER,
64445 		ZEND_NULL_HANDLER,
64446 		ZEND_NULL_HANDLER,
64447 		ZEND_NULL_HANDLER,
64448 		ZEND_NULL_HANDLER,
64449 		ZEND_NULL_HANDLER,
64450 		ZEND_NULL_HANDLER,
64451 		ZEND_NULL_HANDLER,
64452 		ZEND_NULL_HANDLER,
64453 		ZEND_NULL_HANDLER,
64454 		ZEND_NULL_HANDLER,
64455 		ZEND_NULL_HANDLER,
64456 		ZEND_NULL_HANDLER,
64457 		ZEND_NULL_HANDLER,
64458 		ZEND_NULL_HANDLER,
64459 		ZEND_NULL_HANDLER,
64460 		ZEND_NULL_HANDLER,
64461 		ZEND_NULL_HANDLER,
64462 		ZEND_NULL_HANDLER,
64463 		ZEND_ASSIGN_MUL_SPEC_VAR_CONST_HANDLER,
64464 		ZEND_ASSIGN_MUL_SPEC_VAR_CONST_DIM_HANDLER,
64465 		ZEND_ASSIGN_MUL_SPEC_VAR_CONST_OBJ_HANDLER,
64466 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER,
64467 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER,
64468 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64469 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_HANDLER,
64470 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_DIM_HANDLER,
64471 		ZEND_ASSIGN_MUL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64472 		ZEND_NULL_HANDLER,
64473 		ZEND_ASSIGN_MUL_SPEC_VAR_UNUSED_DIM_HANDLER,
64474 		ZEND_NULL_HANDLER,
64475 		ZEND_ASSIGN_MUL_SPEC_VAR_CV_HANDLER,
64476 		ZEND_ASSIGN_MUL_SPEC_VAR_CV_DIM_HANDLER,
64477 		ZEND_ASSIGN_MUL_SPEC_VAR_CV_OBJ_HANDLER,
64478 		ZEND_NULL_HANDLER,
64479 		ZEND_NULL_HANDLER,
64480 		ZEND_ASSIGN_MUL_SPEC_UNUSED_CONST_OBJ_HANDLER,
64481 		ZEND_NULL_HANDLER,
64482 		ZEND_NULL_HANDLER,
64483 		ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64484 		ZEND_NULL_HANDLER,
64485 		ZEND_NULL_HANDLER,
64486 		ZEND_ASSIGN_MUL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64487 		ZEND_NULL_HANDLER,
64488 		ZEND_NULL_HANDLER,
64489 		ZEND_NULL_HANDLER,
64490 		ZEND_NULL_HANDLER,
64491 		ZEND_NULL_HANDLER,
64492 		ZEND_ASSIGN_MUL_SPEC_UNUSED_CV_OBJ_HANDLER,
64493 		ZEND_ASSIGN_MUL_SPEC_CV_CONST_HANDLER,
64494 		ZEND_ASSIGN_MUL_SPEC_CV_CONST_DIM_HANDLER,
64495 		ZEND_ASSIGN_MUL_SPEC_CV_CONST_OBJ_HANDLER,
64496 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER,
64497 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER,
64498 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER,
64499 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_HANDLER,
64500 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_DIM_HANDLER,
64501 		ZEND_ASSIGN_MUL_SPEC_CV_TMPVAR_OBJ_HANDLER,
64502 		ZEND_NULL_HANDLER,
64503 		ZEND_ASSIGN_MUL_SPEC_CV_UNUSED_DIM_HANDLER,
64504 		ZEND_NULL_HANDLER,
64505 		ZEND_ASSIGN_MUL_SPEC_CV_CV_HANDLER,
64506 		ZEND_ASSIGN_MUL_SPEC_CV_CV_DIM_HANDLER,
64507 		ZEND_ASSIGN_MUL_SPEC_CV_CV_OBJ_HANDLER,
64508 		ZEND_NULL_HANDLER,
64509 		ZEND_NULL_HANDLER,
64510 		ZEND_NULL_HANDLER,
64511 		ZEND_NULL_HANDLER,
64512 		ZEND_NULL_HANDLER,
64513 		ZEND_NULL_HANDLER,
64514 		ZEND_NULL_HANDLER,
64515 		ZEND_NULL_HANDLER,
64516 		ZEND_NULL_HANDLER,
64517 		ZEND_NULL_HANDLER,
64518 		ZEND_NULL_HANDLER,
64519 		ZEND_NULL_HANDLER,
64520 		ZEND_NULL_HANDLER,
64521 		ZEND_NULL_HANDLER,
64522 		ZEND_NULL_HANDLER,
64523 		ZEND_NULL_HANDLER,
64524 		ZEND_NULL_HANDLER,
64525 		ZEND_NULL_HANDLER,
64526 		ZEND_NULL_HANDLER,
64527 		ZEND_NULL_HANDLER,
64528 		ZEND_NULL_HANDLER,
64529 		ZEND_NULL_HANDLER,
64530 		ZEND_NULL_HANDLER,
64531 		ZEND_NULL_HANDLER,
64532 		ZEND_NULL_HANDLER,
64533 		ZEND_NULL_HANDLER,
64534 		ZEND_NULL_HANDLER,
64535 		ZEND_NULL_HANDLER,
64536 		ZEND_NULL_HANDLER,
64537 		ZEND_NULL_HANDLER,
64538 		ZEND_ASSIGN_DIV_SPEC_VAR_CONST_HANDLER,
64539 		ZEND_ASSIGN_DIV_SPEC_VAR_CONST_DIM_HANDLER,
64540 		ZEND_ASSIGN_DIV_SPEC_VAR_CONST_OBJ_HANDLER,
64541 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER,
64542 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER,
64543 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64544 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_HANDLER,
64545 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_DIM_HANDLER,
64546 		ZEND_ASSIGN_DIV_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64547 		ZEND_NULL_HANDLER,
64548 		ZEND_ASSIGN_DIV_SPEC_VAR_UNUSED_DIM_HANDLER,
64549 		ZEND_NULL_HANDLER,
64550 		ZEND_ASSIGN_DIV_SPEC_VAR_CV_HANDLER,
64551 		ZEND_ASSIGN_DIV_SPEC_VAR_CV_DIM_HANDLER,
64552 		ZEND_ASSIGN_DIV_SPEC_VAR_CV_OBJ_HANDLER,
64553 		ZEND_NULL_HANDLER,
64554 		ZEND_NULL_HANDLER,
64555 		ZEND_ASSIGN_DIV_SPEC_UNUSED_CONST_OBJ_HANDLER,
64556 		ZEND_NULL_HANDLER,
64557 		ZEND_NULL_HANDLER,
64558 		ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64559 		ZEND_NULL_HANDLER,
64560 		ZEND_NULL_HANDLER,
64561 		ZEND_ASSIGN_DIV_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64562 		ZEND_NULL_HANDLER,
64563 		ZEND_NULL_HANDLER,
64564 		ZEND_NULL_HANDLER,
64565 		ZEND_NULL_HANDLER,
64566 		ZEND_NULL_HANDLER,
64567 		ZEND_ASSIGN_DIV_SPEC_UNUSED_CV_OBJ_HANDLER,
64568 		ZEND_ASSIGN_DIV_SPEC_CV_CONST_HANDLER,
64569 		ZEND_ASSIGN_DIV_SPEC_CV_CONST_DIM_HANDLER,
64570 		ZEND_ASSIGN_DIV_SPEC_CV_CONST_OBJ_HANDLER,
64571 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER,
64572 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER,
64573 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER,
64574 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_HANDLER,
64575 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_DIM_HANDLER,
64576 		ZEND_ASSIGN_DIV_SPEC_CV_TMPVAR_OBJ_HANDLER,
64577 		ZEND_NULL_HANDLER,
64578 		ZEND_ASSIGN_DIV_SPEC_CV_UNUSED_DIM_HANDLER,
64579 		ZEND_NULL_HANDLER,
64580 		ZEND_ASSIGN_DIV_SPEC_CV_CV_HANDLER,
64581 		ZEND_ASSIGN_DIV_SPEC_CV_CV_DIM_HANDLER,
64582 		ZEND_ASSIGN_DIV_SPEC_CV_CV_OBJ_HANDLER,
64583 		ZEND_NULL_HANDLER,
64584 		ZEND_NULL_HANDLER,
64585 		ZEND_NULL_HANDLER,
64586 		ZEND_NULL_HANDLER,
64587 		ZEND_NULL_HANDLER,
64588 		ZEND_NULL_HANDLER,
64589 		ZEND_NULL_HANDLER,
64590 		ZEND_NULL_HANDLER,
64591 		ZEND_NULL_HANDLER,
64592 		ZEND_NULL_HANDLER,
64593 		ZEND_NULL_HANDLER,
64594 		ZEND_NULL_HANDLER,
64595 		ZEND_NULL_HANDLER,
64596 		ZEND_NULL_HANDLER,
64597 		ZEND_NULL_HANDLER,
64598 		ZEND_NULL_HANDLER,
64599 		ZEND_NULL_HANDLER,
64600 		ZEND_NULL_HANDLER,
64601 		ZEND_NULL_HANDLER,
64602 		ZEND_NULL_HANDLER,
64603 		ZEND_NULL_HANDLER,
64604 		ZEND_NULL_HANDLER,
64605 		ZEND_NULL_HANDLER,
64606 		ZEND_NULL_HANDLER,
64607 		ZEND_NULL_HANDLER,
64608 		ZEND_NULL_HANDLER,
64609 		ZEND_NULL_HANDLER,
64610 		ZEND_NULL_HANDLER,
64611 		ZEND_NULL_HANDLER,
64612 		ZEND_NULL_HANDLER,
64613 		ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER,
64614 		ZEND_ASSIGN_MOD_SPEC_VAR_CONST_DIM_HANDLER,
64615 		ZEND_ASSIGN_MOD_SPEC_VAR_CONST_OBJ_HANDLER,
64616 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER,
64617 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER,
64618 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64619 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_HANDLER,
64620 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_DIM_HANDLER,
64621 		ZEND_ASSIGN_MOD_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64622 		ZEND_NULL_HANDLER,
64623 		ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_DIM_HANDLER,
64624 		ZEND_NULL_HANDLER,
64625 		ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER,
64626 		ZEND_ASSIGN_MOD_SPEC_VAR_CV_DIM_HANDLER,
64627 		ZEND_ASSIGN_MOD_SPEC_VAR_CV_OBJ_HANDLER,
64628 		ZEND_NULL_HANDLER,
64629 		ZEND_NULL_HANDLER,
64630 		ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_OBJ_HANDLER,
64631 		ZEND_NULL_HANDLER,
64632 		ZEND_NULL_HANDLER,
64633 		ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64634 		ZEND_NULL_HANDLER,
64635 		ZEND_NULL_HANDLER,
64636 		ZEND_ASSIGN_MOD_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64637 		ZEND_NULL_HANDLER,
64638 		ZEND_NULL_HANDLER,
64639 		ZEND_NULL_HANDLER,
64640 		ZEND_NULL_HANDLER,
64641 		ZEND_NULL_HANDLER,
64642 		ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_OBJ_HANDLER,
64643 		ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER,
64644 		ZEND_ASSIGN_MOD_SPEC_CV_CONST_DIM_HANDLER,
64645 		ZEND_ASSIGN_MOD_SPEC_CV_CONST_OBJ_HANDLER,
64646 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER,
64647 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER,
64648 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER,
64649 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_HANDLER,
64650 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_DIM_HANDLER,
64651 		ZEND_ASSIGN_MOD_SPEC_CV_TMPVAR_OBJ_HANDLER,
64652 		ZEND_NULL_HANDLER,
64653 		ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_DIM_HANDLER,
64654 		ZEND_NULL_HANDLER,
64655 		ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER,
64656 		ZEND_ASSIGN_MOD_SPEC_CV_CV_DIM_HANDLER,
64657 		ZEND_ASSIGN_MOD_SPEC_CV_CV_OBJ_HANDLER,
64658 		ZEND_NULL_HANDLER,
64659 		ZEND_NULL_HANDLER,
64660 		ZEND_NULL_HANDLER,
64661 		ZEND_NULL_HANDLER,
64662 		ZEND_NULL_HANDLER,
64663 		ZEND_NULL_HANDLER,
64664 		ZEND_NULL_HANDLER,
64665 		ZEND_NULL_HANDLER,
64666 		ZEND_NULL_HANDLER,
64667 		ZEND_NULL_HANDLER,
64668 		ZEND_NULL_HANDLER,
64669 		ZEND_NULL_HANDLER,
64670 		ZEND_NULL_HANDLER,
64671 		ZEND_NULL_HANDLER,
64672 		ZEND_NULL_HANDLER,
64673 		ZEND_NULL_HANDLER,
64674 		ZEND_NULL_HANDLER,
64675 		ZEND_NULL_HANDLER,
64676 		ZEND_NULL_HANDLER,
64677 		ZEND_NULL_HANDLER,
64678 		ZEND_NULL_HANDLER,
64679 		ZEND_NULL_HANDLER,
64680 		ZEND_NULL_HANDLER,
64681 		ZEND_NULL_HANDLER,
64682 		ZEND_NULL_HANDLER,
64683 		ZEND_NULL_HANDLER,
64684 		ZEND_NULL_HANDLER,
64685 		ZEND_NULL_HANDLER,
64686 		ZEND_NULL_HANDLER,
64687 		ZEND_NULL_HANDLER,
64688 		ZEND_ASSIGN_SL_SPEC_VAR_CONST_HANDLER,
64689 		ZEND_ASSIGN_SL_SPEC_VAR_CONST_DIM_HANDLER,
64690 		ZEND_ASSIGN_SL_SPEC_VAR_CONST_OBJ_HANDLER,
64691 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER,
64692 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER,
64693 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64694 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_HANDLER,
64695 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_DIM_HANDLER,
64696 		ZEND_ASSIGN_SL_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64697 		ZEND_NULL_HANDLER,
64698 		ZEND_ASSIGN_SL_SPEC_VAR_UNUSED_DIM_HANDLER,
64699 		ZEND_NULL_HANDLER,
64700 		ZEND_ASSIGN_SL_SPEC_VAR_CV_HANDLER,
64701 		ZEND_ASSIGN_SL_SPEC_VAR_CV_DIM_HANDLER,
64702 		ZEND_ASSIGN_SL_SPEC_VAR_CV_OBJ_HANDLER,
64703 		ZEND_NULL_HANDLER,
64704 		ZEND_NULL_HANDLER,
64705 		ZEND_ASSIGN_SL_SPEC_UNUSED_CONST_OBJ_HANDLER,
64706 		ZEND_NULL_HANDLER,
64707 		ZEND_NULL_HANDLER,
64708 		ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64709 		ZEND_NULL_HANDLER,
64710 		ZEND_NULL_HANDLER,
64711 		ZEND_ASSIGN_SL_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64712 		ZEND_NULL_HANDLER,
64713 		ZEND_NULL_HANDLER,
64714 		ZEND_NULL_HANDLER,
64715 		ZEND_NULL_HANDLER,
64716 		ZEND_NULL_HANDLER,
64717 		ZEND_ASSIGN_SL_SPEC_UNUSED_CV_OBJ_HANDLER,
64718 		ZEND_ASSIGN_SL_SPEC_CV_CONST_HANDLER,
64719 		ZEND_ASSIGN_SL_SPEC_CV_CONST_DIM_HANDLER,
64720 		ZEND_ASSIGN_SL_SPEC_CV_CONST_OBJ_HANDLER,
64721 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER,
64722 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER,
64723 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER,
64724 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_HANDLER,
64725 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_DIM_HANDLER,
64726 		ZEND_ASSIGN_SL_SPEC_CV_TMPVAR_OBJ_HANDLER,
64727 		ZEND_NULL_HANDLER,
64728 		ZEND_ASSIGN_SL_SPEC_CV_UNUSED_DIM_HANDLER,
64729 		ZEND_NULL_HANDLER,
64730 		ZEND_ASSIGN_SL_SPEC_CV_CV_HANDLER,
64731 		ZEND_ASSIGN_SL_SPEC_CV_CV_DIM_HANDLER,
64732 		ZEND_ASSIGN_SL_SPEC_CV_CV_OBJ_HANDLER,
64733 		ZEND_NULL_HANDLER,
64734 		ZEND_NULL_HANDLER,
64735 		ZEND_NULL_HANDLER,
64736 		ZEND_NULL_HANDLER,
64737 		ZEND_NULL_HANDLER,
64738 		ZEND_NULL_HANDLER,
64739 		ZEND_NULL_HANDLER,
64740 		ZEND_NULL_HANDLER,
64741 		ZEND_NULL_HANDLER,
64742 		ZEND_NULL_HANDLER,
64743 		ZEND_NULL_HANDLER,
64744 		ZEND_NULL_HANDLER,
64745 		ZEND_NULL_HANDLER,
64746 		ZEND_NULL_HANDLER,
64747 		ZEND_NULL_HANDLER,
64748 		ZEND_NULL_HANDLER,
64749 		ZEND_NULL_HANDLER,
64750 		ZEND_NULL_HANDLER,
64751 		ZEND_NULL_HANDLER,
64752 		ZEND_NULL_HANDLER,
64753 		ZEND_NULL_HANDLER,
64754 		ZEND_NULL_HANDLER,
64755 		ZEND_NULL_HANDLER,
64756 		ZEND_NULL_HANDLER,
64757 		ZEND_NULL_HANDLER,
64758 		ZEND_NULL_HANDLER,
64759 		ZEND_NULL_HANDLER,
64760 		ZEND_NULL_HANDLER,
64761 		ZEND_NULL_HANDLER,
64762 		ZEND_NULL_HANDLER,
64763 		ZEND_ASSIGN_SR_SPEC_VAR_CONST_HANDLER,
64764 		ZEND_ASSIGN_SR_SPEC_VAR_CONST_DIM_HANDLER,
64765 		ZEND_ASSIGN_SR_SPEC_VAR_CONST_OBJ_HANDLER,
64766 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER,
64767 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER,
64768 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64769 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_HANDLER,
64770 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_DIM_HANDLER,
64771 		ZEND_ASSIGN_SR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64772 		ZEND_NULL_HANDLER,
64773 		ZEND_ASSIGN_SR_SPEC_VAR_UNUSED_DIM_HANDLER,
64774 		ZEND_NULL_HANDLER,
64775 		ZEND_ASSIGN_SR_SPEC_VAR_CV_HANDLER,
64776 		ZEND_ASSIGN_SR_SPEC_VAR_CV_DIM_HANDLER,
64777 		ZEND_ASSIGN_SR_SPEC_VAR_CV_OBJ_HANDLER,
64778 		ZEND_NULL_HANDLER,
64779 		ZEND_NULL_HANDLER,
64780 		ZEND_ASSIGN_SR_SPEC_UNUSED_CONST_OBJ_HANDLER,
64781 		ZEND_NULL_HANDLER,
64782 		ZEND_NULL_HANDLER,
64783 		ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64784 		ZEND_NULL_HANDLER,
64785 		ZEND_NULL_HANDLER,
64786 		ZEND_ASSIGN_SR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64787 		ZEND_NULL_HANDLER,
64788 		ZEND_NULL_HANDLER,
64789 		ZEND_NULL_HANDLER,
64790 		ZEND_NULL_HANDLER,
64791 		ZEND_NULL_HANDLER,
64792 		ZEND_ASSIGN_SR_SPEC_UNUSED_CV_OBJ_HANDLER,
64793 		ZEND_ASSIGN_SR_SPEC_CV_CONST_HANDLER,
64794 		ZEND_ASSIGN_SR_SPEC_CV_CONST_DIM_HANDLER,
64795 		ZEND_ASSIGN_SR_SPEC_CV_CONST_OBJ_HANDLER,
64796 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER,
64797 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER,
64798 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER,
64799 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_HANDLER,
64800 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_DIM_HANDLER,
64801 		ZEND_ASSIGN_SR_SPEC_CV_TMPVAR_OBJ_HANDLER,
64802 		ZEND_NULL_HANDLER,
64803 		ZEND_ASSIGN_SR_SPEC_CV_UNUSED_DIM_HANDLER,
64804 		ZEND_NULL_HANDLER,
64805 		ZEND_ASSIGN_SR_SPEC_CV_CV_HANDLER,
64806 		ZEND_ASSIGN_SR_SPEC_CV_CV_DIM_HANDLER,
64807 		ZEND_ASSIGN_SR_SPEC_CV_CV_OBJ_HANDLER,
64808 		ZEND_NULL_HANDLER,
64809 		ZEND_NULL_HANDLER,
64810 		ZEND_NULL_HANDLER,
64811 		ZEND_NULL_HANDLER,
64812 		ZEND_NULL_HANDLER,
64813 		ZEND_NULL_HANDLER,
64814 		ZEND_NULL_HANDLER,
64815 		ZEND_NULL_HANDLER,
64816 		ZEND_NULL_HANDLER,
64817 		ZEND_NULL_HANDLER,
64818 		ZEND_NULL_HANDLER,
64819 		ZEND_NULL_HANDLER,
64820 		ZEND_NULL_HANDLER,
64821 		ZEND_NULL_HANDLER,
64822 		ZEND_NULL_HANDLER,
64823 		ZEND_NULL_HANDLER,
64824 		ZEND_NULL_HANDLER,
64825 		ZEND_NULL_HANDLER,
64826 		ZEND_NULL_HANDLER,
64827 		ZEND_NULL_HANDLER,
64828 		ZEND_NULL_HANDLER,
64829 		ZEND_NULL_HANDLER,
64830 		ZEND_NULL_HANDLER,
64831 		ZEND_NULL_HANDLER,
64832 		ZEND_NULL_HANDLER,
64833 		ZEND_NULL_HANDLER,
64834 		ZEND_NULL_HANDLER,
64835 		ZEND_NULL_HANDLER,
64836 		ZEND_NULL_HANDLER,
64837 		ZEND_NULL_HANDLER,
64838 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_HANDLER,
64839 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_DIM_HANDLER,
64840 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CONST_OBJ_HANDLER,
64841 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER,
64842 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER,
64843 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64844 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_HANDLER,
64845 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_DIM_HANDLER,
64846 		ZEND_ASSIGN_CONCAT_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64847 		ZEND_NULL_HANDLER,
64848 		ZEND_ASSIGN_CONCAT_SPEC_VAR_UNUSED_DIM_HANDLER,
64849 		ZEND_NULL_HANDLER,
64850 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_HANDLER,
64851 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_DIM_HANDLER,
64852 		ZEND_ASSIGN_CONCAT_SPEC_VAR_CV_OBJ_HANDLER,
64853 		ZEND_NULL_HANDLER,
64854 		ZEND_NULL_HANDLER,
64855 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CONST_OBJ_HANDLER,
64856 		ZEND_NULL_HANDLER,
64857 		ZEND_NULL_HANDLER,
64858 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64859 		ZEND_NULL_HANDLER,
64860 		ZEND_NULL_HANDLER,
64861 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64862 		ZEND_NULL_HANDLER,
64863 		ZEND_NULL_HANDLER,
64864 		ZEND_NULL_HANDLER,
64865 		ZEND_NULL_HANDLER,
64866 		ZEND_NULL_HANDLER,
64867 		ZEND_ASSIGN_CONCAT_SPEC_UNUSED_CV_OBJ_HANDLER,
64868 		ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_HANDLER,
64869 		ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_DIM_HANDLER,
64870 		ZEND_ASSIGN_CONCAT_SPEC_CV_CONST_OBJ_HANDLER,
64871 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER,
64872 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER,
64873 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER,
64874 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_HANDLER,
64875 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_DIM_HANDLER,
64876 		ZEND_ASSIGN_CONCAT_SPEC_CV_TMPVAR_OBJ_HANDLER,
64877 		ZEND_NULL_HANDLER,
64878 		ZEND_ASSIGN_CONCAT_SPEC_CV_UNUSED_DIM_HANDLER,
64879 		ZEND_NULL_HANDLER,
64880 		ZEND_ASSIGN_CONCAT_SPEC_CV_CV_HANDLER,
64881 		ZEND_ASSIGN_CONCAT_SPEC_CV_CV_DIM_HANDLER,
64882 		ZEND_ASSIGN_CONCAT_SPEC_CV_CV_OBJ_HANDLER,
64883 		ZEND_NULL_HANDLER,
64884 		ZEND_NULL_HANDLER,
64885 		ZEND_NULL_HANDLER,
64886 		ZEND_NULL_HANDLER,
64887 		ZEND_NULL_HANDLER,
64888 		ZEND_NULL_HANDLER,
64889 		ZEND_NULL_HANDLER,
64890 		ZEND_NULL_HANDLER,
64891 		ZEND_NULL_HANDLER,
64892 		ZEND_NULL_HANDLER,
64893 		ZEND_NULL_HANDLER,
64894 		ZEND_NULL_HANDLER,
64895 		ZEND_NULL_HANDLER,
64896 		ZEND_NULL_HANDLER,
64897 		ZEND_NULL_HANDLER,
64898 		ZEND_NULL_HANDLER,
64899 		ZEND_NULL_HANDLER,
64900 		ZEND_NULL_HANDLER,
64901 		ZEND_NULL_HANDLER,
64902 		ZEND_NULL_HANDLER,
64903 		ZEND_NULL_HANDLER,
64904 		ZEND_NULL_HANDLER,
64905 		ZEND_NULL_HANDLER,
64906 		ZEND_NULL_HANDLER,
64907 		ZEND_NULL_HANDLER,
64908 		ZEND_NULL_HANDLER,
64909 		ZEND_NULL_HANDLER,
64910 		ZEND_NULL_HANDLER,
64911 		ZEND_NULL_HANDLER,
64912 		ZEND_NULL_HANDLER,
64913 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_HANDLER,
64914 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_DIM_HANDLER,
64915 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CONST_OBJ_HANDLER,
64916 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER,
64917 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER,
64918 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64919 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_HANDLER,
64920 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_DIM_HANDLER,
64921 		ZEND_ASSIGN_BW_OR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64922 		ZEND_NULL_HANDLER,
64923 		ZEND_ASSIGN_BW_OR_SPEC_VAR_UNUSED_DIM_HANDLER,
64924 		ZEND_NULL_HANDLER,
64925 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_HANDLER,
64926 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_DIM_HANDLER,
64927 		ZEND_ASSIGN_BW_OR_SPEC_VAR_CV_OBJ_HANDLER,
64928 		ZEND_NULL_HANDLER,
64929 		ZEND_NULL_HANDLER,
64930 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CONST_OBJ_HANDLER,
64931 		ZEND_NULL_HANDLER,
64932 		ZEND_NULL_HANDLER,
64933 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64934 		ZEND_NULL_HANDLER,
64935 		ZEND_NULL_HANDLER,
64936 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
64937 		ZEND_NULL_HANDLER,
64938 		ZEND_NULL_HANDLER,
64939 		ZEND_NULL_HANDLER,
64940 		ZEND_NULL_HANDLER,
64941 		ZEND_NULL_HANDLER,
64942 		ZEND_ASSIGN_BW_OR_SPEC_UNUSED_CV_OBJ_HANDLER,
64943 		ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_HANDLER,
64944 		ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_DIM_HANDLER,
64945 		ZEND_ASSIGN_BW_OR_SPEC_CV_CONST_OBJ_HANDLER,
64946 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER,
64947 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER,
64948 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER,
64949 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_HANDLER,
64950 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_DIM_HANDLER,
64951 		ZEND_ASSIGN_BW_OR_SPEC_CV_TMPVAR_OBJ_HANDLER,
64952 		ZEND_NULL_HANDLER,
64953 		ZEND_ASSIGN_BW_OR_SPEC_CV_UNUSED_DIM_HANDLER,
64954 		ZEND_NULL_HANDLER,
64955 		ZEND_ASSIGN_BW_OR_SPEC_CV_CV_HANDLER,
64956 		ZEND_ASSIGN_BW_OR_SPEC_CV_CV_DIM_HANDLER,
64957 		ZEND_ASSIGN_BW_OR_SPEC_CV_CV_OBJ_HANDLER,
64958 		ZEND_NULL_HANDLER,
64959 		ZEND_NULL_HANDLER,
64960 		ZEND_NULL_HANDLER,
64961 		ZEND_NULL_HANDLER,
64962 		ZEND_NULL_HANDLER,
64963 		ZEND_NULL_HANDLER,
64964 		ZEND_NULL_HANDLER,
64965 		ZEND_NULL_HANDLER,
64966 		ZEND_NULL_HANDLER,
64967 		ZEND_NULL_HANDLER,
64968 		ZEND_NULL_HANDLER,
64969 		ZEND_NULL_HANDLER,
64970 		ZEND_NULL_HANDLER,
64971 		ZEND_NULL_HANDLER,
64972 		ZEND_NULL_HANDLER,
64973 		ZEND_NULL_HANDLER,
64974 		ZEND_NULL_HANDLER,
64975 		ZEND_NULL_HANDLER,
64976 		ZEND_NULL_HANDLER,
64977 		ZEND_NULL_HANDLER,
64978 		ZEND_NULL_HANDLER,
64979 		ZEND_NULL_HANDLER,
64980 		ZEND_NULL_HANDLER,
64981 		ZEND_NULL_HANDLER,
64982 		ZEND_NULL_HANDLER,
64983 		ZEND_NULL_HANDLER,
64984 		ZEND_NULL_HANDLER,
64985 		ZEND_NULL_HANDLER,
64986 		ZEND_NULL_HANDLER,
64987 		ZEND_NULL_HANDLER,
64988 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_HANDLER,
64989 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_DIM_HANDLER,
64990 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CONST_OBJ_HANDLER,
64991 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER,
64992 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER,
64993 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64994 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_HANDLER,
64995 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_DIM_HANDLER,
64996 		ZEND_ASSIGN_BW_AND_SPEC_VAR_TMPVAR_OBJ_HANDLER,
64997 		ZEND_NULL_HANDLER,
64998 		ZEND_ASSIGN_BW_AND_SPEC_VAR_UNUSED_DIM_HANDLER,
64999 		ZEND_NULL_HANDLER,
65000 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_HANDLER,
65001 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_DIM_HANDLER,
65002 		ZEND_ASSIGN_BW_AND_SPEC_VAR_CV_OBJ_HANDLER,
65003 		ZEND_NULL_HANDLER,
65004 		ZEND_NULL_HANDLER,
65005 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CONST_OBJ_HANDLER,
65006 		ZEND_NULL_HANDLER,
65007 		ZEND_NULL_HANDLER,
65008 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
65009 		ZEND_NULL_HANDLER,
65010 		ZEND_NULL_HANDLER,
65011 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
65012 		ZEND_NULL_HANDLER,
65013 		ZEND_NULL_HANDLER,
65014 		ZEND_NULL_HANDLER,
65015 		ZEND_NULL_HANDLER,
65016 		ZEND_NULL_HANDLER,
65017 		ZEND_ASSIGN_BW_AND_SPEC_UNUSED_CV_OBJ_HANDLER,
65018 		ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_HANDLER,
65019 		ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_DIM_HANDLER,
65020 		ZEND_ASSIGN_BW_AND_SPEC_CV_CONST_OBJ_HANDLER,
65021 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER,
65022 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER,
65023 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER,
65024 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_HANDLER,
65025 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_DIM_HANDLER,
65026 		ZEND_ASSIGN_BW_AND_SPEC_CV_TMPVAR_OBJ_HANDLER,
65027 		ZEND_NULL_HANDLER,
65028 		ZEND_ASSIGN_BW_AND_SPEC_CV_UNUSED_DIM_HANDLER,
65029 		ZEND_NULL_HANDLER,
65030 		ZEND_ASSIGN_BW_AND_SPEC_CV_CV_HANDLER,
65031 		ZEND_ASSIGN_BW_AND_SPEC_CV_CV_DIM_HANDLER,
65032 		ZEND_ASSIGN_BW_AND_SPEC_CV_CV_OBJ_HANDLER,
65033 		ZEND_NULL_HANDLER,
65034 		ZEND_NULL_HANDLER,
65035 		ZEND_NULL_HANDLER,
65036 		ZEND_NULL_HANDLER,
65037 		ZEND_NULL_HANDLER,
65038 		ZEND_NULL_HANDLER,
65039 		ZEND_NULL_HANDLER,
65040 		ZEND_NULL_HANDLER,
65041 		ZEND_NULL_HANDLER,
65042 		ZEND_NULL_HANDLER,
65043 		ZEND_NULL_HANDLER,
65044 		ZEND_NULL_HANDLER,
65045 		ZEND_NULL_HANDLER,
65046 		ZEND_NULL_HANDLER,
65047 		ZEND_NULL_HANDLER,
65048 		ZEND_NULL_HANDLER,
65049 		ZEND_NULL_HANDLER,
65050 		ZEND_NULL_HANDLER,
65051 		ZEND_NULL_HANDLER,
65052 		ZEND_NULL_HANDLER,
65053 		ZEND_NULL_HANDLER,
65054 		ZEND_NULL_HANDLER,
65055 		ZEND_NULL_HANDLER,
65056 		ZEND_NULL_HANDLER,
65057 		ZEND_NULL_HANDLER,
65058 		ZEND_NULL_HANDLER,
65059 		ZEND_NULL_HANDLER,
65060 		ZEND_NULL_HANDLER,
65061 		ZEND_NULL_HANDLER,
65062 		ZEND_NULL_HANDLER,
65063 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_HANDLER,
65064 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_DIM_HANDLER,
65065 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CONST_OBJ_HANDLER,
65066 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER,
65067 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER,
65068 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
65069 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_HANDLER,
65070 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_DIM_HANDLER,
65071 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_TMPVAR_OBJ_HANDLER,
65072 		ZEND_NULL_HANDLER,
65073 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_UNUSED_DIM_HANDLER,
65074 		ZEND_NULL_HANDLER,
65075 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_HANDLER,
65076 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_DIM_HANDLER,
65077 		ZEND_ASSIGN_BW_XOR_SPEC_VAR_CV_OBJ_HANDLER,
65078 		ZEND_NULL_HANDLER,
65079 		ZEND_NULL_HANDLER,
65080 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CONST_OBJ_HANDLER,
65081 		ZEND_NULL_HANDLER,
65082 		ZEND_NULL_HANDLER,
65083 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
65084 		ZEND_NULL_HANDLER,
65085 		ZEND_NULL_HANDLER,
65086 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
65087 		ZEND_NULL_HANDLER,
65088 		ZEND_NULL_HANDLER,
65089 		ZEND_NULL_HANDLER,
65090 		ZEND_NULL_HANDLER,
65091 		ZEND_NULL_HANDLER,
65092 		ZEND_ASSIGN_BW_XOR_SPEC_UNUSED_CV_OBJ_HANDLER,
65093 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_HANDLER,
65094 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_DIM_HANDLER,
65095 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CONST_OBJ_HANDLER,
65096 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
65097 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER,
65098 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER,
65099 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_HANDLER,
65100 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_DIM_HANDLER,
65101 		ZEND_ASSIGN_BW_XOR_SPEC_CV_TMPVAR_OBJ_HANDLER,
65102 		ZEND_NULL_HANDLER,
65103 		ZEND_ASSIGN_BW_XOR_SPEC_CV_UNUSED_DIM_HANDLER,
65104 		ZEND_NULL_HANDLER,
65105 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_HANDLER,
65106 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_DIM_HANDLER,
65107 		ZEND_ASSIGN_BW_XOR_SPEC_CV_CV_OBJ_HANDLER,
65108 		ZEND_NULL_HANDLER,
65109 		ZEND_NULL_HANDLER,
65110 		ZEND_NULL_HANDLER,
65111 		ZEND_NULL_HANDLER,
65112 		ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED_HANDLER,
65113 		ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_HANDLER,
65114 		ZEND_NULL_HANDLER,
65115 		ZEND_NULL_HANDLER,
65116 		ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_HANDLER,
65117 		ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HANDLER,
65118 		ZEND_NULL_HANDLER,
65119 		ZEND_NULL_HANDLER,
65120 		ZEND_NULL_HANDLER,
65121 		ZEND_NULL_HANDLER,
65122 		ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED_HANDLER,
65123 		ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_HANDLER,
65124 		ZEND_NULL_HANDLER,
65125 		ZEND_NULL_HANDLER,
65126 		ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_HANDLER,
65127 		ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HANDLER,
65128 		ZEND_NULL_HANDLER,
65129 		ZEND_NULL_HANDLER,
65130 		ZEND_POST_INC_SPEC_VAR_HANDLER,
65131 		ZEND_NULL_HANDLER,
65132 		ZEND_POST_INC_SPEC_CV_HANDLER,
65133 		ZEND_NULL_HANDLER,
65134 		ZEND_NULL_HANDLER,
65135 		ZEND_POST_DEC_SPEC_VAR_HANDLER,
65136 		ZEND_NULL_HANDLER,
65137 		ZEND_POST_DEC_SPEC_CV_HANDLER,
65138 		ZEND_NULL_HANDLER,
65139 		ZEND_NULL_HANDLER,
65140 		ZEND_NULL_HANDLER,
65141 		ZEND_NULL_HANDLER,
65142 		ZEND_NULL_HANDLER,
65143 		ZEND_NULL_HANDLER,
65144 		ZEND_NULL_HANDLER,
65145 		ZEND_NULL_HANDLER,
65146 		ZEND_NULL_HANDLER,
65147 		ZEND_NULL_HANDLER,
65148 		ZEND_NULL_HANDLER,
65149 		ZEND_NULL_HANDLER,
65150 		ZEND_NULL_HANDLER,
65151 		ZEND_NULL_HANDLER,
65152 		ZEND_NULL_HANDLER,
65153 		ZEND_NULL_HANDLER,
65154 		ZEND_NULL_HANDLER,
65155 		ZEND_NULL_HANDLER,
65156 		ZEND_NULL_HANDLER,
65157 		ZEND_NULL_HANDLER,
65158 		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_UNUSED_HANDLER,
65159 		ZEND_ASSIGN_SPEC_VAR_CONST_RETVAL_USED_HANDLER,
65160 		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_UNUSED_HANDLER,
65161 		ZEND_ASSIGN_SPEC_VAR_TMP_RETVAL_USED_HANDLER,
65162 		ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_UNUSED_HANDLER,
65163 		ZEND_ASSIGN_SPEC_VAR_VAR_RETVAL_USED_HANDLER,
65164 		ZEND_NULL_HANDLER,
65165 		ZEND_NULL_HANDLER,
65166 		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER,
65167 		ZEND_ASSIGN_SPEC_VAR_CV_RETVAL_USED_HANDLER,
65168 		ZEND_NULL_HANDLER,
65169 		ZEND_NULL_HANDLER,
65170 		ZEND_NULL_HANDLER,
65171 		ZEND_NULL_HANDLER,
65172 		ZEND_NULL_HANDLER,
65173 		ZEND_NULL_HANDLER,
65174 		ZEND_NULL_HANDLER,
65175 		ZEND_NULL_HANDLER,
65176 		ZEND_NULL_HANDLER,
65177 		ZEND_NULL_HANDLER,
65178 		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_UNUSED_HANDLER,
65179 		ZEND_ASSIGN_SPEC_CV_CONST_RETVAL_USED_HANDLER,
65180 		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_UNUSED_HANDLER,
65181 		ZEND_ASSIGN_SPEC_CV_TMP_RETVAL_USED_HANDLER,
65182 		ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_UNUSED_HANDLER,
65183 		ZEND_ASSIGN_SPEC_CV_VAR_RETVAL_USED_HANDLER,
65184 		ZEND_NULL_HANDLER,
65185 		ZEND_NULL_HANDLER,
65186 		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_UNUSED_HANDLER,
65187 		ZEND_ASSIGN_SPEC_CV_CV_RETVAL_USED_HANDLER,
65188 		ZEND_NULL_HANDLER,
65189 		ZEND_NULL_HANDLER,
65190 		ZEND_NULL_HANDLER,
65191 		ZEND_NULL_HANDLER,
65192 		ZEND_NULL_HANDLER,
65193 		ZEND_NULL_HANDLER,
65194 		ZEND_NULL_HANDLER,
65195 		ZEND_NULL_HANDLER,
65196 		ZEND_NULL_HANDLER,
65197 		ZEND_NULL_HANDLER,
65198 		ZEND_NULL_HANDLER,
65199 		ZEND_NULL_HANDLER,
65200 		ZEND_ASSIGN_REF_SPEC_VAR_VAR_HANDLER,
65201 		ZEND_NULL_HANDLER,
65202 		ZEND_ASSIGN_REF_SPEC_VAR_CV_HANDLER,
65203 		ZEND_NULL_HANDLER,
65204 		ZEND_NULL_HANDLER,
65205 		ZEND_NULL_HANDLER,
65206 		ZEND_NULL_HANDLER,
65207 		ZEND_NULL_HANDLER,
65208 		ZEND_NULL_HANDLER,
65209 		ZEND_NULL_HANDLER,
65210 		ZEND_ASSIGN_REF_SPEC_CV_VAR_HANDLER,
65211 		ZEND_NULL_HANDLER,
65212 		ZEND_ASSIGN_REF_SPEC_CV_CV_HANDLER,
65213 		ZEND_ECHO_SPEC_CONST_HANDLER,
65214 		ZEND_ECHO_SPEC_TMPVAR_HANDLER,
65215 		ZEND_ECHO_SPEC_TMPVAR_HANDLER,
65216 		ZEND_NULL_HANDLER,
65217 		ZEND_ECHO_SPEC_CV_HANDLER,
65218 		ZEND_GENERATOR_CREATE_SPEC_HANDLER,
65219 		ZEND_JMP_SPEC_HANDLER,
65220 		ZEND_JMPZ_SPEC_CONST_HANDLER,
65221 		ZEND_JMPZ_SPEC_TMPVAR_HANDLER,
65222 		ZEND_JMPZ_SPEC_TMPVAR_HANDLER,
65223 		ZEND_NULL_HANDLER,
65224 		ZEND_JMPZ_SPEC_CV_HANDLER,
65225 		ZEND_JMPNZ_SPEC_CONST_HANDLER,
65226 		ZEND_JMPNZ_SPEC_TMPVAR_HANDLER,
65227 		ZEND_JMPNZ_SPEC_TMPVAR_HANDLER,
65228 		ZEND_NULL_HANDLER,
65229 		ZEND_JMPNZ_SPEC_CV_HANDLER,
65230 		ZEND_JMPZNZ_SPEC_CONST_HANDLER,
65231 		ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER,
65232 		ZEND_JMPZNZ_SPEC_TMPVAR_HANDLER,
65233 		ZEND_NULL_HANDLER,
65234 		ZEND_JMPZNZ_SPEC_CV_HANDLER,
65235 		ZEND_JMPZ_EX_SPEC_CONST_HANDLER,
65236 		ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER,
65237 		ZEND_JMPZ_EX_SPEC_TMPVAR_HANDLER,
65238 		ZEND_NULL_HANDLER,
65239 		ZEND_JMPZ_EX_SPEC_CV_HANDLER,
65240 		ZEND_JMPNZ_EX_SPEC_CONST_HANDLER,
65241 		ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER,
65242 		ZEND_JMPNZ_EX_SPEC_TMPVAR_HANDLER,
65243 		ZEND_NULL_HANDLER,
65244 		ZEND_JMPNZ_EX_SPEC_CV_HANDLER,
65245 		ZEND_CASE_SPEC_CONST_CONST_HANDLER,
65246 		ZEND_CASE_SPEC_CONST_TMPVAR_HANDLER,
65247 		ZEND_CASE_SPEC_CONST_TMPVAR_HANDLER,
65248 		ZEND_NULL_HANDLER,
65249 		ZEND_CASE_SPEC_CONST_CV_HANDLER,
65250 		ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER,
65251 		ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER,
65252 		ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER,
65253 		ZEND_NULL_HANDLER,
65254 		ZEND_CASE_SPEC_TMPVAR_CV_HANDLER,
65255 		ZEND_CASE_SPEC_TMPVAR_CONST_HANDLER,
65256 		ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER,
65257 		ZEND_CASE_SPEC_TMPVAR_TMPVAR_HANDLER,
65258 		ZEND_NULL_HANDLER,
65259 		ZEND_CASE_SPEC_TMPVAR_CV_HANDLER,
65260 		ZEND_NULL_HANDLER,
65261 		ZEND_NULL_HANDLER,
65262 		ZEND_NULL_HANDLER,
65263 		ZEND_NULL_HANDLER,
65264 		ZEND_NULL_HANDLER,
65265 		ZEND_CASE_SPEC_CV_CONST_HANDLER,
65266 		ZEND_CASE_SPEC_CV_TMPVAR_HANDLER,
65267 		ZEND_CASE_SPEC_CV_TMPVAR_HANDLER,
65268 		ZEND_NULL_HANDLER,
65269 		ZEND_CASE_SPEC_CV_CV_HANDLER,
65270 		ZEND_NULL_HANDLER,
65271 		ZEND_NULL_HANDLER,
65272 		ZEND_NULL_HANDLER,
65273 		ZEND_NULL_HANDLER,
65274 		ZEND_NULL_HANDLER,
65275 		ZEND_NULL_HANDLER,
65276 		ZEND_NULL_HANDLER,
65277 		ZEND_NULL_HANDLER,
65278 		ZEND_NULL_HANDLER,
65279 		ZEND_NULL_HANDLER,
65280 		ZEND_NULL_HANDLER,
65281 		ZEND_NULL_HANDLER,
65282 		ZEND_NULL_HANDLER,
65283 		ZEND_NULL_HANDLER,
65284 		ZEND_NULL_HANDLER,
65285 		ZEND_NULL_HANDLER,
65286 		ZEND_NULL_HANDLER,
65287 		ZEND_NULL_HANDLER,
65288 		ZEND_NULL_HANDLER,
65289 		ZEND_NULL_HANDLER,
65290 		ZEND_NULL_HANDLER,
65291 		ZEND_NULL_HANDLER,
65292 		ZEND_NULL_HANDLER,
65293 		ZEND_CHECK_VAR_SPEC_CV_UNUSED_HANDLER,
65294 		ZEND_NULL_HANDLER,
65295 		ZEND_NULL_HANDLER,
65296 		ZEND_NULL_HANDLER,
65297 		ZEND_NULL_HANDLER,
65298 		ZEND_NULL_HANDLER,
65299 		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_HANDLER,
65300 		ZEND_SEND_VAR_NO_REF_EX_SPEC_VAR_QUICK_HANDLER,
65301 		ZEND_NULL_HANDLER,
65302 		ZEND_NULL_HANDLER,
65303 		ZEND_NULL_HANDLER,
65304 		ZEND_NULL_HANDLER,
65305 		ZEND_NULL_HANDLER,
65306 		ZEND_NULL_HANDLER,
65307 		ZEND_NULL_HANDLER,
65308 		ZEND_NULL_HANDLER,
65309 		ZEND_NULL_HANDLER,
65310 		ZEND_NULL_HANDLER,
65311 		ZEND_NULL_HANDLER,
65312 		ZEND_NULL_HANDLER,
65313 		ZEND_NULL_HANDLER,
65314 		ZEND_NULL_HANDLER,
65315 		ZEND_NULL_HANDLER,
65316 		ZEND_NULL_HANDLER,
65317 		ZEND_NULL_HANDLER,
65318 		ZEND_MAKE_REF_SPEC_VAR_UNUSED_HANDLER,
65319 		ZEND_NULL_HANDLER,
65320 		ZEND_NULL_HANDLER,
65321 		ZEND_NULL_HANDLER,
65322 		ZEND_NULL_HANDLER,
65323 		ZEND_NULL_HANDLER,
65324 		ZEND_NULL_HANDLER,
65325 		ZEND_NULL_HANDLER,
65326 		ZEND_NULL_HANDLER,
65327 		ZEND_NULL_HANDLER,
65328 		ZEND_MAKE_REF_SPEC_CV_UNUSED_HANDLER,
65329 		ZEND_NULL_HANDLER,
65330 		ZEND_BOOL_SPEC_CONST_HANDLER,
65331 		ZEND_BOOL_SPEC_TMPVAR_HANDLER,
65332 		ZEND_BOOL_SPEC_TMPVAR_HANDLER,
65333 		ZEND_NULL_HANDLER,
65334 		ZEND_BOOL_SPEC_CV_HANDLER,
65335 		ZEND_FAST_CONCAT_SPEC_CONST_CONST_HANDLER,
65336 		ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
65337 		ZEND_FAST_CONCAT_SPEC_CONST_TMPVAR_HANDLER,
65338 		ZEND_NULL_HANDLER,
65339 		ZEND_FAST_CONCAT_SPEC_CONST_CV_HANDLER,
65340 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
65341 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
65342 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
65343 		ZEND_NULL_HANDLER,
65344 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER,
65345 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CONST_HANDLER,
65346 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
65347 		ZEND_FAST_CONCAT_SPEC_TMPVAR_TMPVAR_HANDLER,
65348 		ZEND_NULL_HANDLER,
65349 		ZEND_FAST_CONCAT_SPEC_TMPVAR_CV_HANDLER,
65350 		ZEND_NULL_HANDLER,
65351 		ZEND_NULL_HANDLER,
65352 		ZEND_NULL_HANDLER,
65353 		ZEND_NULL_HANDLER,
65354 		ZEND_NULL_HANDLER,
65355 		ZEND_FAST_CONCAT_SPEC_CV_CONST_HANDLER,
65356 		ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER,
65357 		ZEND_FAST_CONCAT_SPEC_CV_TMPVAR_HANDLER,
65358 		ZEND_NULL_HANDLER,
65359 		ZEND_FAST_CONCAT_SPEC_CV_CV_HANDLER,
65360 		ZEND_NULL_HANDLER,
65361 		ZEND_NULL_HANDLER,
65362 		ZEND_NULL_HANDLER,
65363 		ZEND_NULL_HANDLER,
65364 		ZEND_NULL_HANDLER,
65365 		ZEND_NULL_HANDLER,
65366 		ZEND_NULL_HANDLER,
65367 		ZEND_NULL_HANDLER,
65368 		ZEND_NULL_HANDLER,
65369 		ZEND_NULL_HANDLER,
65370 		ZEND_NULL_HANDLER,
65371 		ZEND_NULL_HANDLER,
65372 		ZEND_NULL_HANDLER,
65373 		ZEND_NULL_HANDLER,
65374 		ZEND_NULL_HANDLER,
65375 		ZEND_ROPE_INIT_SPEC_UNUSED_CONST_HANDLER,
65376 		ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER,
65377 		ZEND_ROPE_INIT_SPEC_UNUSED_TMPVAR_HANDLER,
65378 		ZEND_NULL_HANDLER,
65379 		ZEND_ROPE_INIT_SPEC_UNUSED_CV_HANDLER,
65380 		ZEND_NULL_HANDLER,
65381 		ZEND_NULL_HANDLER,
65382 		ZEND_NULL_HANDLER,
65383 		ZEND_NULL_HANDLER,
65384 		ZEND_NULL_HANDLER,
65385 		ZEND_NULL_HANDLER,
65386 		ZEND_NULL_HANDLER,
65387 		ZEND_NULL_HANDLER,
65388 		ZEND_NULL_HANDLER,
65389 		ZEND_NULL_HANDLER,
65390 		ZEND_ROPE_ADD_SPEC_TMP_CONST_HANDLER,
65391 		ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER,
65392 		ZEND_ROPE_ADD_SPEC_TMP_TMPVAR_HANDLER,
65393 		ZEND_NULL_HANDLER,
65394 		ZEND_ROPE_ADD_SPEC_TMP_CV_HANDLER,
65395 		ZEND_NULL_HANDLER,
65396 		ZEND_NULL_HANDLER,
65397 		ZEND_NULL_HANDLER,
65398 		ZEND_NULL_HANDLER,
65399 		ZEND_NULL_HANDLER,
65400 		ZEND_NULL_HANDLER,
65401 		ZEND_NULL_HANDLER,
65402 		ZEND_NULL_HANDLER,
65403 		ZEND_NULL_HANDLER,
65404 		ZEND_NULL_HANDLER,
65405 		ZEND_NULL_HANDLER,
65406 		ZEND_NULL_HANDLER,
65407 		ZEND_NULL_HANDLER,
65408 		ZEND_NULL_HANDLER,
65409 		ZEND_NULL_HANDLER,
65410 		ZEND_NULL_HANDLER,
65411 		ZEND_NULL_HANDLER,
65412 		ZEND_NULL_HANDLER,
65413 		ZEND_NULL_HANDLER,
65414 		ZEND_NULL_HANDLER,
65415 		ZEND_ROPE_END_SPEC_TMP_CONST_HANDLER,
65416 		ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER,
65417 		ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDLER,
65418 		ZEND_NULL_HANDLER,
65419 		ZEND_ROPE_END_SPEC_TMP_CV_HANDLER,
65420 		ZEND_NULL_HANDLER,
65421 		ZEND_NULL_HANDLER,
65422 		ZEND_NULL_HANDLER,
65423 		ZEND_NULL_HANDLER,
65424 		ZEND_NULL_HANDLER,
65425 		ZEND_NULL_HANDLER,
65426 		ZEND_NULL_HANDLER,
65427 		ZEND_NULL_HANDLER,
65428 		ZEND_NULL_HANDLER,
65429 		ZEND_NULL_HANDLER,
65430 		ZEND_NULL_HANDLER,
65431 		ZEND_NULL_HANDLER,
65432 		ZEND_NULL_HANDLER,
65433 		ZEND_NULL_HANDLER,
65434 		ZEND_NULL_HANDLER,
65435 		ZEND_BEGIN_SILENCE_SPEC_HANDLER,
65436 		ZEND_NULL_HANDLER,
65437 		ZEND_END_SILENCE_SPEC_TMP_HANDLER,
65438 		ZEND_NULL_HANDLER,
65439 		ZEND_NULL_HANDLER,
65440 		ZEND_NULL_HANDLER,
65441 		ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER,
65442 		ZEND_NULL_HANDLER,
65443 		ZEND_NULL_HANDLER,
65444 		ZEND_NULL_HANDLER,
65445 		ZEND_NULL_HANDLER,
65446 		ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER,
65447 		ZEND_DO_FCALL_SPEC_RETVAL_USED_HANDLER,
65448 		ZEND_INIT_FCALL_SPEC_CONST_HANDLER,
65449 		ZEND_NULL_HANDLER,
65450 		ZEND_NULL_HANDLER,
65451 		ZEND_NULL_HANDLER,
65452 		ZEND_NULL_HANDLER,
65453 		ZEND_RETURN_SPEC_CONST_HANDLER,
65454 		ZEND_RETURN_SPEC_TMP_HANDLER,
65455 		ZEND_RETURN_SPEC_VAR_HANDLER,
65456 		ZEND_NULL_HANDLER,
65457 		ZEND_RETURN_SPEC_CV_HANDLER,
65458 		ZEND_RECV_SPEC_HANDLER,
65459 		ZEND_RECV_INIT_SPEC_CONST_HANDLER,
65460 		ZEND_NULL_HANDLER,
65461 		ZEND_NULL_HANDLER,
65462 		ZEND_NULL_HANDLER,
65463 		ZEND_NULL_HANDLER,
65464 		ZEND_SEND_VAL_SPEC_CONST_HANDLER,
65465 		ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER,
65466 		ZEND_SEND_VAL_SPEC_TMPVAR_HANDLER,
65467 		ZEND_NULL_HANDLER,
65468 		ZEND_NULL_HANDLER,
65469 		ZEND_NULL_HANDLER,
65470 		ZEND_NULL_HANDLER,
65471 		ZEND_NULL_HANDLER,
65472 		ZEND_NULL_HANDLER,
65473 		ZEND_SEND_VAR_EX_SPEC_VAR_HANDLER,
65474 		ZEND_SEND_VAR_EX_SPEC_VAR_QUICK_HANDLER,
65475 		ZEND_NULL_HANDLER,
65476 		ZEND_NULL_HANDLER,
65477 		ZEND_SEND_VAR_EX_SPEC_CV_HANDLER,
65478 		ZEND_SEND_VAR_EX_SPEC_CV_QUICK_HANDLER,
65479 		ZEND_NULL_HANDLER,
65480 		ZEND_NULL_HANDLER,
65481 		ZEND_SEND_REF_SPEC_VAR_HANDLER,
65482 		ZEND_NULL_HANDLER,
65483 		ZEND_SEND_REF_SPEC_CV_HANDLER,
65484 		ZEND_NEW_SPEC_CONST_HANDLER,
65485 		ZEND_NULL_HANDLER,
65486 		ZEND_NEW_SPEC_VAR_HANDLER,
65487 		ZEND_NEW_SPEC_UNUSED_HANDLER,
65488 		ZEND_NULL_HANDLER,
65489 		ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER,
65490 		ZEND_NULL_HANDLER,
65491 		ZEND_NULL_HANDLER,
65492 		ZEND_NULL_HANDLER,
65493 		ZEND_NULL_HANDLER,
65494 		ZEND_NULL_HANDLER,
65495 		ZEND_FREE_SPEC_TMPVAR_HANDLER,
65496 		ZEND_FREE_SPEC_TMPVAR_HANDLER,
65497 		ZEND_NULL_HANDLER,
65498 		ZEND_NULL_HANDLER,
65499 		ZEND_INIT_ARRAY_SPEC_CONST_CONST_HANDLER,
65500 		ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER,
65501 		ZEND_INIT_ARRAY_SPEC_CONST_TMPVAR_HANDLER,
65502 		ZEND_INIT_ARRAY_SPEC_CONST_UNUSED_HANDLER,
65503 		ZEND_INIT_ARRAY_SPEC_CONST_CV_HANDLER,
65504 		ZEND_INIT_ARRAY_SPEC_TMP_CONST_HANDLER,
65505 		ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER,
65506 		ZEND_INIT_ARRAY_SPEC_TMP_TMPVAR_HANDLER,
65507 		ZEND_INIT_ARRAY_SPEC_TMP_UNUSED_HANDLER,
65508 		ZEND_INIT_ARRAY_SPEC_TMP_CV_HANDLER,
65509 		ZEND_INIT_ARRAY_SPEC_VAR_CONST_HANDLER,
65510 		ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER,
65511 		ZEND_INIT_ARRAY_SPEC_VAR_TMPVAR_HANDLER,
65512 		ZEND_INIT_ARRAY_SPEC_VAR_UNUSED_HANDLER,
65513 		ZEND_INIT_ARRAY_SPEC_VAR_CV_HANDLER,
65514 		ZEND_NULL_HANDLER,
65515 		ZEND_NULL_HANDLER,
65516 		ZEND_NULL_HANDLER,
65517 		ZEND_NULL_HANDLER,
65518 		ZEND_NULL_HANDLER,
65519 		ZEND_INIT_ARRAY_SPEC_CV_CONST_HANDLER,
65520 		ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER,
65521 		ZEND_INIT_ARRAY_SPEC_CV_TMPVAR_HANDLER,
65522 		ZEND_INIT_ARRAY_SPEC_CV_UNUSED_HANDLER,
65523 		ZEND_INIT_ARRAY_SPEC_CV_CV_HANDLER,
65524 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER,
65525 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER,
65526 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMPVAR_HANDLER,
65527 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER,
65528 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER,
65529 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER,
65530 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER,
65531 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMPVAR_HANDLER,
65532 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER,
65533 		ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER,
65534 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER,
65535 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER,
65536 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMPVAR_HANDLER,
65537 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER,
65538 		ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER,
65539 		ZEND_NULL_HANDLER,
65540 		ZEND_NULL_HANDLER,
65541 		ZEND_NULL_HANDLER,
65542 		ZEND_NULL_HANDLER,
65543 		ZEND_NULL_HANDLER,
65544 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER,
65545 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER,
65546 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMPVAR_HANDLER,
65547 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER,
65548 		ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER,
65549 		ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER,
65550 		ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER,
65551 		ZEND_INCLUDE_OR_EVAL_SPEC_TMPVAR_HANDLER,
65552 		ZEND_NULL_HANDLER,
65553 		ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER,
65554 		ZEND_NULL_HANDLER,
65555 		ZEND_NULL_HANDLER,
65556 		ZEND_NULL_HANDLER,
65557 		ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HANDLER,
65558 		ZEND_NULL_HANDLER,
65559 		ZEND_NULL_HANDLER,
65560 		ZEND_NULL_HANDLER,
65561 		ZEND_NULL_HANDLER,
65562 		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
65563 		ZEND_NULL_HANDLER,
65564 		ZEND_NULL_HANDLER,
65565 		ZEND_NULL_HANDLER,
65566 		ZEND_NULL_HANDLER,
65567 		ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
65568 		ZEND_NULL_HANDLER,
65569 		ZEND_NULL_HANDLER,
65570 		ZEND_NULL_HANDLER,
65571 		ZEND_NULL_HANDLER,
65572 		ZEND_NULL_HANDLER,
65573 		ZEND_NULL_HANDLER,
65574 		ZEND_NULL_HANDLER,
65575 		ZEND_NULL_HANDLER,
65576 		ZEND_NULL_HANDLER,
65577 		ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDLER,
65578 		ZEND_NULL_HANDLER,
65579 		ZEND_NULL_HANDLER,
65580 		ZEND_NULL_HANDLER,
65581 		ZEND_NULL_HANDLER,
65582 		ZEND_NULL_HANDLER,
65583 		ZEND_NULL_HANDLER,
65584 		ZEND_NULL_HANDLER,
65585 		ZEND_NULL_HANDLER,
65586 		ZEND_NULL_HANDLER,
65587 		ZEND_NULL_HANDLER,
65588 		ZEND_NULL_HANDLER,
65589 		ZEND_UNSET_DIM_SPEC_VAR_CONST_HANDLER,
65590 		ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER,
65591 		ZEND_UNSET_DIM_SPEC_VAR_TMPVAR_HANDLER,
65592 		ZEND_NULL_HANDLER,
65593 		ZEND_UNSET_DIM_SPEC_VAR_CV_HANDLER,
65594 		ZEND_NULL_HANDLER,
65595 		ZEND_NULL_HANDLER,
65596 		ZEND_NULL_HANDLER,
65597 		ZEND_NULL_HANDLER,
65598 		ZEND_NULL_HANDLER,
65599 		ZEND_UNSET_DIM_SPEC_CV_CONST_HANDLER,
65600 		ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER,
65601 		ZEND_UNSET_DIM_SPEC_CV_TMPVAR_HANDLER,
65602 		ZEND_NULL_HANDLER,
65603 		ZEND_UNSET_DIM_SPEC_CV_CV_HANDLER,
65604 		ZEND_NULL_HANDLER,
65605 		ZEND_NULL_HANDLER,
65606 		ZEND_NULL_HANDLER,
65607 		ZEND_NULL_HANDLER,
65608 		ZEND_NULL_HANDLER,
65609 		ZEND_NULL_HANDLER,
65610 		ZEND_NULL_HANDLER,
65611 		ZEND_NULL_HANDLER,
65612 		ZEND_NULL_HANDLER,
65613 		ZEND_NULL_HANDLER,
65614 		ZEND_UNSET_OBJ_SPEC_VAR_CONST_HANDLER,
65615 		ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER,
65616 		ZEND_UNSET_OBJ_SPEC_VAR_TMPVAR_HANDLER,
65617 		ZEND_NULL_HANDLER,
65618 		ZEND_UNSET_OBJ_SPEC_VAR_CV_HANDLER,
65619 		ZEND_UNSET_OBJ_SPEC_UNUSED_CONST_HANDLER,
65620 		ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
65621 		ZEND_UNSET_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
65622 		ZEND_NULL_HANDLER,
65623 		ZEND_UNSET_OBJ_SPEC_UNUSED_CV_HANDLER,
65624 		ZEND_UNSET_OBJ_SPEC_CV_CONST_HANDLER,
65625 		ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER,
65626 		ZEND_UNSET_OBJ_SPEC_CV_TMPVAR_HANDLER,
65627 		ZEND_NULL_HANDLER,
65628 		ZEND_UNSET_OBJ_SPEC_CV_CV_HANDLER,
65629 		ZEND_FE_RESET_R_SPEC_CONST_HANDLER,
65630 		ZEND_FE_RESET_R_SPEC_TMP_HANDLER,
65631 		ZEND_FE_RESET_R_SPEC_VAR_HANDLER,
65632 		ZEND_NULL_HANDLER,
65633 		ZEND_FE_RESET_R_SPEC_CV_HANDLER,
65634 		ZEND_NULL_HANDLER,
65635 		ZEND_NULL_HANDLER,
65636 		ZEND_FE_FETCH_R_SPEC_VAR_HANDLER,
65637 		ZEND_NULL_HANDLER,
65638 		ZEND_NULL_HANDLER,
65639 		ZEND_EXIT_SPEC_CONST_HANDLER,
65640 		ZEND_EXIT_SPEC_TMPVAR_HANDLER,
65641 		ZEND_EXIT_SPEC_TMPVAR_HANDLER,
65642 		ZEND_EXIT_SPEC_UNUSED_HANDLER,
65643 		ZEND_EXIT_SPEC_CV_HANDLER,
65644 		ZEND_NULL_HANDLER,
65645 		ZEND_NULL_HANDLER,
65646 		ZEND_NULL_HANDLER,
65647 		ZEND_FETCH_R_SPEC_CONST_UNUSED_HANDLER,
65648 		ZEND_NULL_HANDLER,
65649 		ZEND_NULL_HANDLER,
65650 		ZEND_NULL_HANDLER,
65651 		ZEND_NULL_HANDLER,
65652 		ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER,
65653 		ZEND_NULL_HANDLER,
65654 		ZEND_NULL_HANDLER,
65655 		ZEND_NULL_HANDLER,
65656 		ZEND_NULL_HANDLER,
65657 		ZEND_FETCH_R_SPEC_TMPVAR_UNUSED_HANDLER,
65658 		ZEND_NULL_HANDLER,
65659 		ZEND_NULL_HANDLER,
65660 		ZEND_NULL_HANDLER,
65661 		ZEND_NULL_HANDLER,
65662 		ZEND_NULL_HANDLER,
65663 		ZEND_NULL_HANDLER,
65664 		ZEND_NULL_HANDLER,
65665 		ZEND_NULL_HANDLER,
65666 		ZEND_NULL_HANDLER,
65667 		ZEND_FETCH_R_SPEC_CV_UNUSED_HANDLER,
65668 		ZEND_NULL_HANDLER,
65669 		ZEND_FETCH_DIM_R_SPEC_CONST_CONST_HANDLER,
65670 		ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER,
65671 		ZEND_FETCH_DIM_R_SPEC_CONST_TMPVAR_HANDLER,
65672 		ZEND_NULL_HANDLER,
65673 		ZEND_FETCH_DIM_R_SPEC_CONST_CV_HANDLER,
65674 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER,
65675 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
65676 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
65677 		ZEND_NULL_HANDLER,
65678 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER,
65679 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CONST_HANDLER,
65680 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
65681 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_TMPVAR_HANDLER,
65682 		ZEND_NULL_HANDLER,
65683 		ZEND_FETCH_DIM_R_SPEC_TMPVAR_CV_HANDLER,
65684 		ZEND_NULL_HANDLER,
65685 		ZEND_NULL_HANDLER,
65686 		ZEND_NULL_HANDLER,
65687 		ZEND_NULL_HANDLER,
65688 		ZEND_NULL_HANDLER,
65689 		ZEND_FETCH_DIM_R_SPEC_CV_CONST_HANDLER,
65690 		ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER,
65691 		ZEND_FETCH_DIM_R_SPEC_CV_TMPVAR_HANDLER,
65692 		ZEND_NULL_HANDLER,
65693 		ZEND_FETCH_DIM_R_SPEC_CV_CV_HANDLER,
65694 		ZEND_FETCH_OBJ_R_SPEC_CONST_CONST_HANDLER,
65695 		ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER,
65696 		ZEND_FETCH_OBJ_R_SPEC_CONST_TMPVAR_HANDLER,
65697 		ZEND_NULL_HANDLER,
65698 		ZEND_FETCH_OBJ_R_SPEC_CONST_CV_HANDLER,
65699 		ZEND_FETCH_OBJ_R_SPEC_TMP_CONST_HANDLER,
65700 		ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_HANDLER,
65701 		ZEND_FETCH_OBJ_R_SPEC_TMP_TMPVAR_HANDLER,
65702 		ZEND_NULL_HANDLER,
65703 		ZEND_FETCH_OBJ_R_SPEC_TMP_CV_HANDLER,
65704 		ZEND_FETCH_OBJ_R_SPEC_VAR_CONST_HANDLER,
65705 		ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_HANDLER,
65706 		ZEND_FETCH_OBJ_R_SPEC_VAR_TMPVAR_HANDLER,
65707 		ZEND_NULL_HANDLER,
65708 		ZEND_FETCH_OBJ_R_SPEC_VAR_CV_HANDLER,
65709 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CONST_HANDLER,
65710 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER,
65711 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_TMPVAR_HANDLER,
65712 		ZEND_NULL_HANDLER,
65713 		ZEND_FETCH_OBJ_R_SPEC_UNUSED_CV_HANDLER,
65714 		ZEND_FETCH_OBJ_R_SPEC_CV_CONST_HANDLER,
65715 		ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER,
65716 		ZEND_FETCH_OBJ_R_SPEC_CV_TMPVAR_HANDLER,
65717 		ZEND_NULL_HANDLER,
65718 		ZEND_FETCH_OBJ_R_SPEC_CV_CV_HANDLER,
65719 		ZEND_NULL_HANDLER,
65720 		ZEND_NULL_HANDLER,
65721 		ZEND_NULL_HANDLER,
65722 		ZEND_FETCH_W_SPEC_CONST_UNUSED_HANDLER,
65723 		ZEND_NULL_HANDLER,
65724 		ZEND_NULL_HANDLER,
65725 		ZEND_NULL_HANDLER,
65726 		ZEND_NULL_HANDLER,
65727 		ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER,
65728 		ZEND_NULL_HANDLER,
65729 		ZEND_NULL_HANDLER,
65730 		ZEND_NULL_HANDLER,
65731 		ZEND_NULL_HANDLER,
65732 		ZEND_FETCH_W_SPEC_TMPVAR_UNUSED_HANDLER,
65733 		ZEND_NULL_HANDLER,
65734 		ZEND_NULL_HANDLER,
65735 		ZEND_NULL_HANDLER,
65736 		ZEND_NULL_HANDLER,
65737 		ZEND_NULL_HANDLER,
65738 		ZEND_NULL_HANDLER,
65739 		ZEND_NULL_HANDLER,
65740 		ZEND_NULL_HANDLER,
65741 		ZEND_NULL_HANDLER,
65742 		ZEND_FETCH_W_SPEC_CV_UNUSED_HANDLER,
65743 		ZEND_NULL_HANDLER,
65744 		ZEND_NULL_HANDLER,
65745 		ZEND_NULL_HANDLER,
65746 		ZEND_NULL_HANDLER,
65747 		ZEND_NULL_HANDLER,
65748 		ZEND_NULL_HANDLER,
65749 		ZEND_NULL_HANDLER,
65750 		ZEND_NULL_HANDLER,
65751 		ZEND_NULL_HANDLER,
65752 		ZEND_NULL_HANDLER,
65753 		ZEND_NULL_HANDLER,
65754 		ZEND_FETCH_DIM_W_SPEC_VAR_CONST_HANDLER,
65755 		ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER,
65756 		ZEND_FETCH_DIM_W_SPEC_VAR_TMPVAR_HANDLER,
65757 		ZEND_FETCH_DIM_W_SPEC_VAR_UNUSED_HANDLER,
65758 		ZEND_FETCH_DIM_W_SPEC_VAR_CV_HANDLER,
65759 		ZEND_NULL_HANDLER,
65760 		ZEND_NULL_HANDLER,
65761 		ZEND_NULL_HANDLER,
65762 		ZEND_NULL_HANDLER,
65763 		ZEND_NULL_HANDLER,
65764 		ZEND_FETCH_DIM_W_SPEC_CV_CONST_HANDLER,
65765 		ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER,
65766 		ZEND_FETCH_DIM_W_SPEC_CV_TMPVAR_HANDLER,
65767 		ZEND_FETCH_DIM_W_SPEC_CV_UNUSED_HANDLER,
65768 		ZEND_FETCH_DIM_W_SPEC_CV_CV_HANDLER,
65769 		ZEND_NULL_HANDLER,
65770 		ZEND_NULL_HANDLER,
65771 		ZEND_NULL_HANDLER,
65772 		ZEND_NULL_HANDLER,
65773 		ZEND_NULL_HANDLER,
65774 		ZEND_NULL_HANDLER,
65775 		ZEND_NULL_HANDLER,
65776 		ZEND_NULL_HANDLER,
65777 		ZEND_NULL_HANDLER,
65778 		ZEND_NULL_HANDLER,
65779 		ZEND_FETCH_OBJ_W_SPEC_VAR_CONST_HANDLER,
65780 		ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER,
65781 		ZEND_FETCH_OBJ_W_SPEC_VAR_TMPVAR_HANDLER,
65782 		ZEND_NULL_HANDLER,
65783 		ZEND_FETCH_OBJ_W_SPEC_VAR_CV_HANDLER,
65784 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CONST_HANDLER,
65785 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER,
65786 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_TMPVAR_HANDLER,
65787 		ZEND_NULL_HANDLER,
65788 		ZEND_FETCH_OBJ_W_SPEC_UNUSED_CV_HANDLER,
65789 		ZEND_FETCH_OBJ_W_SPEC_CV_CONST_HANDLER,
65790 		ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER,
65791 		ZEND_FETCH_OBJ_W_SPEC_CV_TMPVAR_HANDLER,
65792 		ZEND_NULL_HANDLER,
65793 		ZEND_FETCH_OBJ_W_SPEC_CV_CV_HANDLER,
65794 		ZEND_NULL_HANDLER,
65795 		ZEND_NULL_HANDLER,
65796 		ZEND_NULL_HANDLER,
65797 		ZEND_FETCH_RW_SPEC_CONST_UNUSED_HANDLER,
65798 		ZEND_NULL_HANDLER,
65799 		ZEND_NULL_HANDLER,
65800 		ZEND_NULL_HANDLER,
65801 		ZEND_NULL_HANDLER,
65802 		ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER,
65803 		ZEND_NULL_HANDLER,
65804 		ZEND_NULL_HANDLER,
65805 		ZEND_NULL_HANDLER,
65806 		ZEND_NULL_HANDLER,
65807 		ZEND_FETCH_RW_SPEC_TMPVAR_UNUSED_HANDLER,
65808 		ZEND_NULL_HANDLER,
65809 		ZEND_NULL_HANDLER,
65810 		ZEND_NULL_HANDLER,
65811 		ZEND_NULL_HANDLER,
65812 		ZEND_NULL_HANDLER,
65813 		ZEND_NULL_HANDLER,
65814 		ZEND_NULL_HANDLER,
65815 		ZEND_NULL_HANDLER,
65816 		ZEND_NULL_HANDLER,
65817 		ZEND_FETCH_RW_SPEC_CV_UNUSED_HANDLER,
65818 		ZEND_NULL_HANDLER,
65819 		ZEND_NULL_HANDLER,
65820 		ZEND_NULL_HANDLER,
65821 		ZEND_NULL_HANDLER,
65822 		ZEND_NULL_HANDLER,
65823 		ZEND_NULL_HANDLER,
65824 		ZEND_NULL_HANDLER,
65825 		ZEND_NULL_HANDLER,
65826 		ZEND_NULL_HANDLER,
65827 		ZEND_NULL_HANDLER,
65828 		ZEND_NULL_HANDLER,
65829 		ZEND_FETCH_DIM_RW_SPEC_VAR_CONST_HANDLER,
65830 		ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER,
65831 		ZEND_FETCH_DIM_RW_SPEC_VAR_TMPVAR_HANDLER,
65832 		ZEND_FETCH_DIM_RW_SPEC_VAR_UNUSED_HANDLER,
65833 		ZEND_FETCH_DIM_RW_SPEC_VAR_CV_HANDLER,
65834 		ZEND_NULL_HANDLER,
65835 		ZEND_NULL_HANDLER,
65836 		ZEND_NULL_HANDLER,
65837 		ZEND_NULL_HANDLER,
65838 		ZEND_NULL_HANDLER,
65839 		ZEND_FETCH_DIM_RW_SPEC_CV_CONST_HANDLER,
65840 		ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER,
65841 		ZEND_FETCH_DIM_RW_SPEC_CV_TMPVAR_HANDLER,
65842 		ZEND_FETCH_DIM_RW_SPEC_CV_UNUSED_HANDLER,
65843 		ZEND_FETCH_DIM_RW_SPEC_CV_CV_HANDLER,
65844 		ZEND_NULL_HANDLER,
65845 		ZEND_NULL_HANDLER,
65846 		ZEND_NULL_HANDLER,
65847 		ZEND_NULL_HANDLER,
65848 		ZEND_NULL_HANDLER,
65849 		ZEND_NULL_HANDLER,
65850 		ZEND_NULL_HANDLER,
65851 		ZEND_NULL_HANDLER,
65852 		ZEND_NULL_HANDLER,
65853 		ZEND_NULL_HANDLER,
65854 		ZEND_FETCH_OBJ_RW_SPEC_VAR_CONST_HANDLER,
65855 		ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER,
65856 		ZEND_FETCH_OBJ_RW_SPEC_VAR_TMPVAR_HANDLER,
65857 		ZEND_NULL_HANDLER,
65858 		ZEND_FETCH_OBJ_RW_SPEC_VAR_CV_HANDLER,
65859 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CONST_HANDLER,
65860 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER,
65861 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_TMPVAR_HANDLER,
65862 		ZEND_NULL_HANDLER,
65863 		ZEND_FETCH_OBJ_RW_SPEC_UNUSED_CV_HANDLER,
65864 		ZEND_FETCH_OBJ_RW_SPEC_CV_CONST_HANDLER,
65865 		ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER,
65866 		ZEND_FETCH_OBJ_RW_SPEC_CV_TMPVAR_HANDLER,
65867 		ZEND_NULL_HANDLER,
65868 		ZEND_FETCH_OBJ_RW_SPEC_CV_CV_HANDLER,
65869 		ZEND_NULL_HANDLER,
65870 		ZEND_NULL_HANDLER,
65871 		ZEND_NULL_HANDLER,
65872 		ZEND_FETCH_IS_SPEC_CONST_UNUSED_HANDLER,
65873 		ZEND_NULL_HANDLER,
65874 		ZEND_NULL_HANDLER,
65875 		ZEND_NULL_HANDLER,
65876 		ZEND_NULL_HANDLER,
65877 		ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER,
65878 		ZEND_NULL_HANDLER,
65879 		ZEND_NULL_HANDLER,
65880 		ZEND_NULL_HANDLER,
65881 		ZEND_NULL_HANDLER,
65882 		ZEND_FETCH_IS_SPEC_TMPVAR_UNUSED_HANDLER,
65883 		ZEND_NULL_HANDLER,
65884 		ZEND_NULL_HANDLER,
65885 		ZEND_NULL_HANDLER,
65886 		ZEND_NULL_HANDLER,
65887 		ZEND_NULL_HANDLER,
65888 		ZEND_NULL_HANDLER,
65889 		ZEND_NULL_HANDLER,
65890 		ZEND_NULL_HANDLER,
65891 		ZEND_NULL_HANDLER,
65892 		ZEND_FETCH_IS_SPEC_CV_UNUSED_HANDLER,
65893 		ZEND_NULL_HANDLER,
65894 		ZEND_FETCH_DIM_IS_SPEC_CONST_CONST_HANDLER,
65895 		ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER,
65896 		ZEND_FETCH_DIM_IS_SPEC_CONST_TMPVAR_HANDLER,
65897 		ZEND_NULL_HANDLER,
65898 		ZEND_FETCH_DIM_IS_SPEC_CONST_CV_HANDLER,
65899 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER,
65900 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65901 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65902 		ZEND_NULL_HANDLER,
65903 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER,
65904 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CONST_HANDLER,
65905 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65906 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65907 		ZEND_NULL_HANDLER,
65908 		ZEND_FETCH_DIM_IS_SPEC_TMPVAR_CV_HANDLER,
65909 		ZEND_NULL_HANDLER,
65910 		ZEND_NULL_HANDLER,
65911 		ZEND_NULL_HANDLER,
65912 		ZEND_NULL_HANDLER,
65913 		ZEND_NULL_HANDLER,
65914 		ZEND_FETCH_DIM_IS_SPEC_CV_CONST_HANDLER,
65915 		ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER,
65916 		ZEND_FETCH_DIM_IS_SPEC_CV_TMPVAR_HANDLER,
65917 		ZEND_NULL_HANDLER,
65918 		ZEND_FETCH_DIM_IS_SPEC_CV_CV_HANDLER,
65919 		ZEND_FETCH_OBJ_IS_SPEC_CONST_CONST_HANDLER,
65920 		ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER,
65921 		ZEND_FETCH_OBJ_IS_SPEC_CONST_TMPVAR_HANDLER,
65922 		ZEND_NULL_HANDLER,
65923 		ZEND_FETCH_OBJ_IS_SPEC_CONST_CV_HANDLER,
65924 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER,
65925 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65926 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65927 		ZEND_NULL_HANDLER,
65928 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER,
65929 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CONST_HANDLER,
65930 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65931 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_TMPVAR_HANDLER,
65932 		ZEND_NULL_HANDLER,
65933 		ZEND_FETCH_OBJ_IS_SPEC_TMPVAR_CV_HANDLER,
65934 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CONST_HANDLER,
65935 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER,
65936 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_TMPVAR_HANDLER,
65937 		ZEND_NULL_HANDLER,
65938 		ZEND_FETCH_OBJ_IS_SPEC_UNUSED_CV_HANDLER,
65939 		ZEND_FETCH_OBJ_IS_SPEC_CV_CONST_HANDLER,
65940 		ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER,
65941 		ZEND_FETCH_OBJ_IS_SPEC_CV_TMPVAR_HANDLER,
65942 		ZEND_NULL_HANDLER,
65943 		ZEND_FETCH_OBJ_IS_SPEC_CV_CV_HANDLER,
65944 		ZEND_NULL_HANDLER,
65945 		ZEND_NULL_HANDLER,
65946 		ZEND_NULL_HANDLER,
65947 		ZEND_FETCH_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
65948 		ZEND_NULL_HANDLER,
65949 		ZEND_NULL_HANDLER,
65950 		ZEND_NULL_HANDLER,
65951 		ZEND_NULL_HANDLER,
65952 		ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
65953 		ZEND_NULL_HANDLER,
65954 		ZEND_NULL_HANDLER,
65955 		ZEND_NULL_HANDLER,
65956 		ZEND_NULL_HANDLER,
65957 		ZEND_FETCH_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
65958 		ZEND_NULL_HANDLER,
65959 		ZEND_NULL_HANDLER,
65960 		ZEND_NULL_HANDLER,
65961 		ZEND_NULL_HANDLER,
65962 		ZEND_NULL_HANDLER,
65963 		ZEND_NULL_HANDLER,
65964 		ZEND_NULL_HANDLER,
65965 		ZEND_NULL_HANDLER,
65966 		ZEND_NULL_HANDLER,
65967 		ZEND_FETCH_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
65968 		ZEND_NULL_HANDLER,
65969 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
65970 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
65971 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
65972 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
65973 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CONST_CV_HANDLER,
65974 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CONST_HANDLER,
65975 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
65976 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
65977 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_UNUSED_HANDLER,
65978 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_TMP_CV_HANDLER,
65979 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
65980 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
65981 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
65982 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_UNUSED_HANDLER,
65983 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_VAR_CV_HANDLER,
65984 		ZEND_NULL_HANDLER,
65985 		ZEND_NULL_HANDLER,
65986 		ZEND_NULL_HANDLER,
65987 		ZEND_NULL_HANDLER,
65988 		ZEND_NULL_HANDLER,
65989 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CONST_HANDLER,
65990 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
65991 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
65992 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
65993 		ZEND_FETCH_DIM_FUNC_ARG_SPEC_CV_CV_HANDLER,
65994 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
65995 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
65996 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_TMPVAR_HANDLER,
65997 		ZEND_NULL_HANDLER,
65998 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CONST_CV_HANDLER,
65999 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CONST_HANDLER,
66000 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
66001 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_TMPVAR_HANDLER,
66002 		ZEND_NULL_HANDLER,
66003 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_TMP_CV_HANDLER,
66004 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CONST_HANDLER,
66005 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
66006 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_TMPVAR_HANDLER,
66007 		ZEND_NULL_HANDLER,
66008 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_VAR_CV_HANDLER,
66009 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CONST_HANDLER,
66010 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER,
66011 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_TMPVAR_HANDLER,
66012 		ZEND_NULL_HANDLER,
66013 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_UNUSED_CV_HANDLER,
66014 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CONST_HANDLER,
66015 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
66016 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_TMPVAR_HANDLER,
66017 		ZEND_NULL_HANDLER,
66018 		ZEND_FETCH_OBJ_FUNC_ARG_SPEC_CV_CV_HANDLER,
66019 		ZEND_NULL_HANDLER,
66020 		ZEND_NULL_HANDLER,
66021 		ZEND_NULL_HANDLER,
66022 		ZEND_FETCH_UNSET_SPEC_CONST_UNUSED_HANDLER,
66023 		ZEND_NULL_HANDLER,
66024 		ZEND_NULL_HANDLER,
66025 		ZEND_NULL_HANDLER,
66026 		ZEND_NULL_HANDLER,
66027 		ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
66028 		ZEND_NULL_HANDLER,
66029 		ZEND_NULL_HANDLER,
66030 		ZEND_NULL_HANDLER,
66031 		ZEND_NULL_HANDLER,
66032 		ZEND_FETCH_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
66033 		ZEND_NULL_HANDLER,
66034 		ZEND_NULL_HANDLER,
66035 		ZEND_NULL_HANDLER,
66036 		ZEND_NULL_HANDLER,
66037 		ZEND_NULL_HANDLER,
66038 		ZEND_NULL_HANDLER,
66039 		ZEND_NULL_HANDLER,
66040 		ZEND_NULL_HANDLER,
66041 		ZEND_NULL_HANDLER,
66042 		ZEND_FETCH_UNSET_SPEC_CV_UNUSED_HANDLER,
66043 		ZEND_NULL_HANDLER,
66044 		ZEND_NULL_HANDLER,
66045 		ZEND_NULL_HANDLER,
66046 		ZEND_NULL_HANDLER,
66047 		ZEND_NULL_HANDLER,
66048 		ZEND_NULL_HANDLER,
66049 		ZEND_NULL_HANDLER,
66050 		ZEND_NULL_HANDLER,
66051 		ZEND_NULL_HANDLER,
66052 		ZEND_NULL_HANDLER,
66053 		ZEND_NULL_HANDLER,
66054 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CONST_HANDLER,
66055 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER,
66056 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_TMPVAR_HANDLER,
66057 		ZEND_NULL_HANDLER,
66058 		ZEND_FETCH_DIM_UNSET_SPEC_VAR_CV_HANDLER,
66059 		ZEND_NULL_HANDLER,
66060 		ZEND_NULL_HANDLER,
66061 		ZEND_NULL_HANDLER,
66062 		ZEND_NULL_HANDLER,
66063 		ZEND_NULL_HANDLER,
66064 		ZEND_FETCH_DIM_UNSET_SPEC_CV_CONST_HANDLER,
66065 		ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER,
66066 		ZEND_FETCH_DIM_UNSET_SPEC_CV_TMPVAR_HANDLER,
66067 		ZEND_NULL_HANDLER,
66068 		ZEND_FETCH_DIM_UNSET_SPEC_CV_CV_HANDLER,
66069 		ZEND_NULL_HANDLER,
66070 		ZEND_NULL_HANDLER,
66071 		ZEND_NULL_HANDLER,
66072 		ZEND_NULL_HANDLER,
66073 		ZEND_NULL_HANDLER,
66074 		ZEND_NULL_HANDLER,
66075 		ZEND_NULL_HANDLER,
66076 		ZEND_NULL_HANDLER,
66077 		ZEND_NULL_HANDLER,
66078 		ZEND_NULL_HANDLER,
66079 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CONST_HANDLER,
66080 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER,
66081 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_TMPVAR_HANDLER,
66082 		ZEND_NULL_HANDLER,
66083 		ZEND_FETCH_OBJ_UNSET_SPEC_VAR_CV_HANDLER,
66084 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CONST_HANDLER,
66085 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER,
66086 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_TMPVAR_HANDLER,
66087 		ZEND_NULL_HANDLER,
66088 		ZEND_FETCH_OBJ_UNSET_SPEC_UNUSED_CV_HANDLER,
66089 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CONST_HANDLER,
66090 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER,
66091 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_TMPVAR_HANDLER,
66092 		ZEND_NULL_HANDLER,
66093 		ZEND_FETCH_OBJ_UNSET_SPEC_CV_CV_HANDLER,
66094 		ZEND_FETCH_LIST_SPEC_CONST_CONST_HANDLER,
66095 		ZEND_FETCH_LIST_SPEC_CONST_TMPVAR_HANDLER,
66096 		ZEND_FETCH_LIST_SPEC_CONST_TMPVAR_HANDLER,
66097 		ZEND_NULL_HANDLER,
66098 		ZEND_FETCH_LIST_SPEC_CONST_CV_HANDLER,
66099 		ZEND_FETCH_LIST_SPEC_TMPVAR_CONST_HANDLER,
66100 		ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_HANDLER,
66101 		ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_HANDLER,
66102 		ZEND_NULL_HANDLER,
66103 		ZEND_FETCH_LIST_SPEC_TMPVAR_CV_HANDLER,
66104 		ZEND_FETCH_LIST_SPEC_TMPVAR_CONST_HANDLER,
66105 		ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_HANDLER,
66106 		ZEND_FETCH_LIST_SPEC_TMPVAR_TMPVAR_HANDLER,
66107 		ZEND_NULL_HANDLER,
66108 		ZEND_FETCH_LIST_SPEC_TMPVAR_CV_HANDLER,
66109 		ZEND_NULL_HANDLER,
66110 		ZEND_NULL_HANDLER,
66111 		ZEND_NULL_HANDLER,
66112 		ZEND_NULL_HANDLER,
66113 		ZEND_NULL_HANDLER,
66114 		ZEND_FETCH_LIST_SPEC_CV_CONST_HANDLER,
66115 		ZEND_FETCH_LIST_SPEC_CV_TMPVAR_HANDLER,
66116 		ZEND_FETCH_LIST_SPEC_CV_TMPVAR_HANDLER,
66117 		ZEND_NULL_HANDLER,
66118 		ZEND_FETCH_LIST_SPEC_CV_CV_HANDLER,
66119 		ZEND_NULL_HANDLER,
66120 		ZEND_NULL_HANDLER,
66121 		ZEND_NULL_HANDLER,
66122 		ZEND_NULL_HANDLER,
66123 		ZEND_NULL_HANDLER,
66124 		ZEND_NULL_HANDLER,
66125 		ZEND_NULL_HANDLER,
66126 		ZEND_NULL_HANDLER,
66127 		ZEND_NULL_HANDLER,
66128 		ZEND_NULL_HANDLER,
66129 		ZEND_NULL_HANDLER,
66130 		ZEND_NULL_HANDLER,
66131 		ZEND_NULL_HANDLER,
66132 		ZEND_NULL_HANDLER,
66133 		ZEND_NULL_HANDLER,
66134 		ZEND_FETCH_CONSTANT_SPEC_UNUSED_CONST_HANDLER,
66135 		ZEND_NULL_HANDLER,
66136 		ZEND_NULL_HANDLER,
66137 		ZEND_NULL_HANDLER,
66138 		ZEND_NULL_HANDLER,
66139 		ZEND_NULL_HANDLER,
66140 		ZEND_NULL_HANDLER,
66141 		ZEND_NULL_HANDLER,
66142 		ZEND_NULL_HANDLER,
66143 		ZEND_NULL_HANDLER,
66144 		ZEND_EXT_STMT_SPEC_HANDLER,
66145 		ZEND_EXT_FCALL_BEGIN_SPEC_HANDLER,
66146 		ZEND_EXT_FCALL_END_SPEC_HANDLER,
66147 		ZEND_EXT_NOP_SPEC_HANDLER,
66148 		ZEND_TICKS_SPEC_HANDLER,
66149 		ZEND_NULL_HANDLER,
66150 		ZEND_NULL_HANDLER,
66151 		ZEND_SEND_VAR_NO_REF_SPEC_VAR_HANDLER,
66152 		ZEND_NULL_HANDLER,
66153 		ZEND_NULL_HANDLER,
66154 		ZEND_NULL_HANDLER,
66155 		ZEND_NULL_HANDLER,
66156 		ZEND_NULL_HANDLER,
66157 		ZEND_NULL_HANDLER,
66158 		ZEND_CATCH_SPEC_CONST_CV_HANDLER,
66159 		ZEND_NULL_HANDLER,
66160 		ZEND_NULL_HANDLER,
66161 		ZEND_NULL_HANDLER,
66162 		ZEND_NULL_HANDLER,
66163 		ZEND_NULL_HANDLER,
66164 		ZEND_NULL_HANDLER,
66165 		ZEND_NULL_HANDLER,
66166 		ZEND_NULL_HANDLER,
66167 		ZEND_NULL_HANDLER,
66168 		ZEND_NULL_HANDLER,
66169 		ZEND_NULL_HANDLER,
66170 		ZEND_NULL_HANDLER,
66171 		ZEND_NULL_HANDLER,
66172 		ZEND_NULL_HANDLER,
66173 		ZEND_NULL_HANDLER,
66174 		ZEND_NULL_HANDLER,
66175 		ZEND_NULL_HANDLER,
66176 		ZEND_NULL_HANDLER,
66177 		ZEND_NULL_HANDLER,
66178 		ZEND_NULL_HANDLER,
66179 		ZEND_THROW_SPEC_CONST_HANDLER,
66180 		ZEND_THROW_SPEC_TMP_HANDLER,
66181 		ZEND_THROW_SPEC_VAR_HANDLER,
66182 		ZEND_NULL_HANDLER,
66183 		ZEND_THROW_SPEC_CV_HANDLER,
66184 		ZEND_FETCH_CLASS_SPEC_CONST_HANDLER,
66185 		ZEND_FETCH_CLASS_SPEC_TMPVAR_HANDLER,
66186 		ZEND_FETCH_CLASS_SPEC_TMPVAR_HANDLER,
66187 		ZEND_FETCH_CLASS_SPEC_UNUSED_HANDLER,
66188 		ZEND_FETCH_CLASS_SPEC_CV_HANDLER,
66189 		ZEND_CLONE_SPEC_CONST_HANDLER,
66190 		ZEND_CLONE_SPEC_TMPVAR_HANDLER,
66191 		ZEND_CLONE_SPEC_TMPVAR_HANDLER,
66192 		ZEND_CLONE_SPEC_UNUSED_HANDLER,
66193 		ZEND_CLONE_SPEC_CV_HANDLER,
66194 		ZEND_RETURN_BY_REF_SPEC_CONST_HANDLER,
66195 		ZEND_RETURN_BY_REF_SPEC_TMP_HANDLER,
66196 		ZEND_RETURN_BY_REF_SPEC_VAR_HANDLER,
66197 		ZEND_NULL_HANDLER,
66198 		ZEND_RETURN_BY_REF_SPEC_CV_HANDLER,
66199 		ZEND_INIT_METHOD_CALL_SPEC_CONST_CONST_HANDLER,
66200 		ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
66201 		ZEND_INIT_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
66202 		ZEND_NULL_HANDLER,
66203 		ZEND_INIT_METHOD_CALL_SPEC_CONST_CV_HANDLER,
66204 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER,
66205 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
66206 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
66207 		ZEND_NULL_HANDLER,
66208 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER,
66209 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CONST_HANDLER,
66210 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
66211 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_TMPVAR_HANDLER,
66212 		ZEND_NULL_HANDLER,
66213 		ZEND_INIT_METHOD_CALL_SPEC_TMPVAR_CV_HANDLER,
66214 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER,
66215 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
66216 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
66217 		ZEND_NULL_HANDLER,
66218 		ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER,
66219 		ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER,
66220 		ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER,
66221 		ZEND_INIT_METHOD_CALL_SPEC_CV_TMPVAR_HANDLER,
66222 		ZEND_NULL_HANDLER,
66223 		ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER,
66224 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CONST_HANDLER,
66225 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
66226 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_TMPVAR_HANDLER,
66227 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_UNUSED_HANDLER,
66228 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_CV_HANDLER,
66229 		ZEND_NULL_HANDLER,
66230 		ZEND_NULL_HANDLER,
66231 		ZEND_NULL_HANDLER,
66232 		ZEND_NULL_HANDLER,
66233 		ZEND_NULL_HANDLER,
66234 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CONST_HANDLER,
66235 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER,
66236 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_TMPVAR_HANDLER,
66237 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_UNUSED_HANDLER,
66238 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_CV_HANDLER,
66239 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER,
66240 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
66241 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_TMPVAR_HANDLER,
66242 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_UNUSED_HANDLER,
66243 		ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_CV_HANDLER,
66244 		ZEND_NULL_HANDLER,
66245 		ZEND_NULL_HANDLER,
66246 		ZEND_NULL_HANDLER,
66247 		ZEND_NULL_HANDLER,
66248 		ZEND_NULL_HANDLER,
66249 		ZEND_NULL_HANDLER,
66250 		ZEND_NULL_HANDLER,
66251 		ZEND_NULL_HANDLER,
66252 		ZEND_ISSET_ISEMPTY_VAR_SPEC_CONST_UNUSED_HANDLER,
66253 		ZEND_NULL_HANDLER,
66254 		ZEND_NULL_HANDLER,
66255 		ZEND_NULL_HANDLER,
66256 		ZEND_NULL_HANDLER,
66257 		ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
66258 		ZEND_NULL_HANDLER,
66259 		ZEND_NULL_HANDLER,
66260 		ZEND_NULL_HANDLER,
66261 		ZEND_NULL_HANDLER,
66262 		ZEND_ISSET_ISEMPTY_VAR_SPEC_TMPVAR_UNUSED_HANDLER,
66263 		ZEND_NULL_HANDLER,
66264 		ZEND_NULL_HANDLER,
66265 		ZEND_NULL_HANDLER,
66266 		ZEND_NULL_HANDLER,
66267 		ZEND_NULL_HANDLER,
66268 		ZEND_NULL_HANDLER,
66269 		ZEND_NULL_HANDLER,
66270 		ZEND_NULL_HANDLER,
66271 		ZEND_NULL_HANDLER,
66272 		ZEND_ISSET_ISEMPTY_VAR_SPEC_CV_UNUSED_HANDLER,
66273 		ZEND_NULL_HANDLER,
66274 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CONST_HANDLER,
66275 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER,
66276 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_TMPVAR_HANDLER,
66277 		ZEND_NULL_HANDLER,
66278 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CONST_CV_HANDLER,
66279 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER,
66280 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66281 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66282 		ZEND_NULL_HANDLER,
66283 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER,
66284 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CONST_HANDLER,
66285 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66286 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66287 		ZEND_NULL_HANDLER,
66288 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_TMPVAR_CV_HANDLER,
66289 		ZEND_NULL_HANDLER,
66290 		ZEND_NULL_HANDLER,
66291 		ZEND_NULL_HANDLER,
66292 		ZEND_NULL_HANDLER,
66293 		ZEND_NULL_HANDLER,
66294 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CONST_HANDLER,
66295 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER,
66296 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_TMPVAR_HANDLER,
66297 		ZEND_NULL_HANDLER,
66298 		ZEND_ISSET_ISEMPTY_DIM_OBJ_SPEC_CV_CV_HANDLER,
66299 		ZEND_SEND_VAL_EX_SPEC_CONST_HANDLER,
66300 		ZEND_SEND_VAL_EX_SPEC_CONST_QUICK_HANDLER,
66301 		ZEND_SEND_VAL_EX_SPEC_TMP_HANDLER,
66302 		ZEND_SEND_VAL_EX_SPEC_TMP_QUICK_HANDLER,
66303 		ZEND_NULL_HANDLER,
66304 		ZEND_NULL_HANDLER,
66305 		ZEND_NULL_HANDLER,
66306 		ZEND_NULL_HANDLER,
66307 		ZEND_NULL_HANDLER,
66308 		ZEND_NULL_HANDLER,
66309 		ZEND_NULL_HANDLER,
66310 		ZEND_NULL_HANDLER,
66311 		ZEND_SEND_VAR_SPEC_VAR_HANDLER,
66312 		ZEND_NULL_HANDLER,
66313 		ZEND_SEND_VAR_SPEC_CV_HANDLER,
66314 		ZEND_INIT_USER_CALL_SPEC_CONST_CONST_HANDLER,
66315 		ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER,
66316 		ZEND_INIT_USER_CALL_SPEC_CONST_TMPVAR_HANDLER,
66317 		ZEND_NULL_HANDLER,
66318 		ZEND_INIT_USER_CALL_SPEC_CONST_CV_HANDLER,
66319 		ZEND_NULL_HANDLER,
66320 		ZEND_NULL_HANDLER,
66321 		ZEND_NULL_HANDLER,
66322 		ZEND_NULL_HANDLER,
66323 		ZEND_NULL_HANDLER,
66324 		ZEND_NULL_HANDLER,
66325 		ZEND_NULL_HANDLER,
66326 		ZEND_NULL_HANDLER,
66327 		ZEND_NULL_HANDLER,
66328 		ZEND_NULL_HANDLER,
66329 		ZEND_NULL_HANDLER,
66330 		ZEND_NULL_HANDLER,
66331 		ZEND_NULL_HANDLER,
66332 		ZEND_NULL_HANDLER,
66333 		ZEND_NULL_HANDLER,
66334 		ZEND_NULL_HANDLER,
66335 		ZEND_NULL_HANDLER,
66336 		ZEND_NULL_HANDLER,
66337 		ZEND_NULL_HANDLER,
66338 		ZEND_NULL_HANDLER,
66339 		ZEND_SEND_ARRAY_SPEC_HANDLER,
66340 		ZEND_SEND_USER_SPEC_CONST_HANDLER,
66341 		ZEND_SEND_USER_SPEC_TMP_HANDLER,
66342 		ZEND_SEND_USER_SPEC_VAR_HANDLER,
66343 		ZEND_NULL_HANDLER,
66344 		ZEND_SEND_USER_SPEC_CV_HANDLER,
66345 		ZEND_STRLEN_SPEC_CONST_HANDLER,
66346 		ZEND_STRLEN_SPEC_TMPVAR_HANDLER,
66347 		ZEND_STRLEN_SPEC_TMPVAR_HANDLER,
66348 		ZEND_NULL_HANDLER,
66349 		ZEND_STRLEN_SPEC_CV_HANDLER,
66350 		ZEND_DEFINED_SPEC_CONST_HANDLER,
66351 		ZEND_NULL_HANDLER,
66352 		ZEND_NULL_HANDLER,
66353 		ZEND_NULL_HANDLER,
66354 		ZEND_NULL_HANDLER,
66355 		ZEND_TYPE_CHECK_SPEC_CONST_HANDLER,
66356 		ZEND_TYPE_CHECK_SPEC_TMP_HANDLER,
66357 		ZEND_TYPE_CHECK_SPEC_VAR_HANDLER,
66358 		ZEND_NULL_HANDLER,
66359 		ZEND_TYPE_CHECK_SPEC_CV_HANDLER,
66360 		ZEND_NULL_HANDLER,
66361 		ZEND_NULL_HANDLER,
66362 		ZEND_NULL_HANDLER,
66363 		ZEND_VERIFY_RETURN_TYPE_SPEC_CONST_UNUSED_HANDLER,
66364 		ZEND_NULL_HANDLER,
66365 		ZEND_NULL_HANDLER,
66366 		ZEND_NULL_HANDLER,
66367 		ZEND_NULL_HANDLER,
66368 		ZEND_VERIFY_RETURN_TYPE_SPEC_TMP_UNUSED_HANDLER,
66369 		ZEND_NULL_HANDLER,
66370 		ZEND_NULL_HANDLER,
66371 		ZEND_NULL_HANDLER,
66372 		ZEND_NULL_HANDLER,
66373 		ZEND_VERIFY_RETURN_TYPE_SPEC_VAR_UNUSED_HANDLER,
66374 		ZEND_NULL_HANDLER,
66375 		ZEND_NULL_HANDLER,
66376 		ZEND_NULL_HANDLER,
66377 		ZEND_NULL_HANDLER,
66378 		ZEND_VERIFY_RETURN_TYPE_SPEC_UNUSED_UNUSED_HANDLER,
66379 		ZEND_NULL_HANDLER,
66380 		ZEND_NULL_HANDLER,
66381 		ZEND_NULL_HANDLER,
66382 		ZEND_NULL_HANDLER,
66383 		ZEND_VERIFY_RETURN_TYPE_SPEC_CV_UNUSED_HANDLER,
66384 		ZEND_NULL_HANDLER,
66385 		ZEND_FE_RESET_RW_SPEC_CONST_HANDLER,
66386 		ZEND_FE_RESET_RW_SPEC_TMP_HANDLER,
66387 		ZEND_FE_RESET_RW_SPEC_VAR_HANDLER,
66388 		ZEND_NULL_HANDLER,
66389 		ZEND_FE_RESET_RW_SPEC_CV_HANDLER,
66390 		ZEND_NULL_HANDLER,
66391 		ZEND_NULL_HANDLER,
66392 		ZEND_FE_FETCH_RW_SPEC_VAR_HANDLER,
66393 		ZEND_NULL_HANDLER,
66394 		ZEND_NULL_HANDLER,
66395 		ZEND_NULL_HANDLER,
66396 		ZEND_FE_FREE_SPEC_TMPVAR_HANDLER,
66397 		ZEND_FE_FREE_SPEC_TMPVAR_HANDLER,
66398 		ZEND_NULL_HANDLER,
66399 		ZEND_NULL_HANDLER,
66400 		ZEND_INIT_DYNAMIC_CALL_SPEC_CONST_HANDLER,
66401 		ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER,
66402 		ZEND_INIT_DYNAMIC_CALL_SPEC_TMPVAR_HANDLER,
66403 		ZEND_NULL_HANDLER,
66404 		ZEND_INIT_DYNAMIC_CALL_SPEC_CV_HANDLER,
66405 		ZEND_DO_ICALL_SPEC_RETVAL_UNUSED_HANDLER,
66406 		ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER,
66407 		ZEND_DO_UCALL_SPEC_RETVAL_UNUSED_HANDLER,
66408 		ZEND_DO_UCALL_SPEC_RETVAL_USED_HANDLER,
66409 		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_UNUSED_HANDLER,
66410 		ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER,
66411 		ZEND_NULL_HANDLER,
66412 		ZEND_NULL_HANDLER,
66413 		ZEND_NULL_HANDLER,
66414 		ZEND_NULL_HANDLER,
66415 		ZEND_NULL_HANDLER,
66416 		ZEND_NULL_HANDLER,
66417 		ZEND_NULL_HANDLER,
66418 		ZEND_NULL_HANDLER,
66419 		ZEND_NULL_HANDLER,
66420 		ZEND_NULL_HANDLER,
66421 		ZEND_PRE_INC_OBJ_SPEC_VAR_CONST_HANDLER,
66422 		ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66423 		ZEND_PRE_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66424 		ZEND_NULL_HANDLER,
66425 		ZEND_PRE_INC_OBJ_SPEC_VAR_CV_HANDLER,
66426 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
66427 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66428 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66429 		ZEND_NULL_HANDLER,
66430 		ZEND_PRE_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
66431 		ZEND_PRE_INC_OBJ_SPEC_CV_CONST_HANDLER,
66432 		ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66433 		ZEND_PRE_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66434 		ZEND_NULL_HANDLER,
66435 		ZEND_PRE_INC_OBJ_SPEC_CV_CV_HANDLER,
66436 		ZEND_NULL_HANDLER,
66437 		ZEND_NULL_HANDLER,
66438 		ZEND_NULL_HANDLER,
66439 		ZEND_NULL_HANDLER,
66440 		ZEND_NULL_HANDLER,
66441 		ZEND_NULL_HANDLER,
66442 		ZEND_NULL_HANDLER,
66443 		ZEND_NULL_HANDLER,
66444 		ZEND_NULL_HANDLER,
66445 		ZEND_NULL_HANDLER,
66446 		ZEND_PRE_DEC_OBJ_SPEC_VAR_CONST_HANDLER,
66447 		ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66448 		ZEND_PRE_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66449 		ZEND_NULL_HANDLER,
66450 		ZEND_PRE_DEC_OBJ_SPEC_VAR_CV_HANDLER,
66451 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER,
66452 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66453 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66454 		ZEND_NULL_HANDLER,
66455 		ZEND_PRE_DEC_OBJ_SPEC_UNUSED_CV_HANDLER,
66456 		ZEND_PRE_DEC_OBJ_SPEC_CV_CONST_HANDLER,
66457 		ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66458 		ZEND_PRE_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66459 		ZEND_NULL_HANDLER,
66460 		ZEND_PRE_DEC_OBJ_SPEC_CV_CV_HANDLER,
66461 		ZEND_NULL_HANDLER,
66462 		ZEND_NULL_HANDLER,
66463 		ZEND_NULL_HANDLER,
66464 		ZEND_NULL_HANDLER,
66465 		ZEND_NULL_HANDLER,
66466 		ZEND_NULL_HANDLER,
66467 		ZEND_NULL_HANDLER,
66468 		ZEND_NULL_HANDLER,
66469 		ZEND_NULL_HANDLER,
66470 		ZEND_NULL_HANDLER,
66471 		ZEND_POST_INC_OBJ_SPEC_VAR_CONST_HANDLER,
66472 		ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66473 		ZEND_POST_INC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66474 		ZEND_NULL_HANDLER,
66475 		ZEND_POST_INC_OBJ_SPEC_VAR_CV_HANDLER,
66476 		ZEND_POST_INC_OBJ_SPEC_UNUSED_CONST_HANDLER,
66477 		ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66478 		ZEND_POST_INC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66479 		ZEND_NULL_HANDLER,
66480 		ZEND_POST_INC_OBJ_SPEC_UNUSED_CV_HANDLER,
66481 		ZEND_POST_INC_OBJ_SPEC_CV_CONST_HANDLER,
66482 		ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66483 		ZEND_POST_INC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66484 		ZEND_NULL_HANDLER,
66485 		ZEND_POST_INC_OBJ_SPEC_CV_CV_HANDLER,
66486 		ZEND_NULL_HANDLER,
66487 		ZEND_NULL_HANDLER,
66488 		ZEND_NULL_HANDLER,
66489 		ZEND_NULL_HANDLER,
66490 		ZEND_NULL_HANDLER,
66491 		ZEND_NULL_HANDLER,
66492 		ZEND_NULL_HANDLER,
66493 		ZEND_NULL_HANDLER,
66494 		ZEND_NULL_HANDLER,
66495 		ZEND_NULL_HANDLER,
66496 		ZEND_POST_DEC_OBJ_SPEC_VAR_CONST_HANDLER,
66497 		ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66498 		ZEND_POST_DEC_OBJ_SPEC_VAR_TMPVAR_HANDLER,
66499 		ZEND_NULL_HANDLER,
66500 		ZEND_POST_DEC_OBJ_SPEC_VAR_CV_HANDLER,
66501 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_CONST_HANDLER,
66502 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66503 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66504 		ZEND_NULL_HANDLER,
66505 		ZEND_POST_DEC_OBJ_SPEC_UNUSED_CV_HANDLER,
66506 		ZEND_POST_DEC_OBJ_SPEC_CV_CONST_HANDLER,
66507 		ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66508 		ZEND_POST_DEC_OBJ_SPEC_CV_TMPVAR_HANDLER,
66509 		ZEND_NULL_HANDLER,
66510 		ZEND_POST_DEC_OBJ_SPEC_CV_CV_HANDLER,
66511 		ZEND_NULL_HANDLER,
66512 		ZEND_NULL_HANDLER,
66513 		ZEND_NULL_HANDLER,
66514 		ZEND_NULL_HANDLER,
66515 		ZEND_NULL_HANDLER,
66516 		ZEND_NULL_HANDLER,
66517 		ZEND_NULL_HANDLER,
66518 		ZEND_NULL_HANDLER,
66519 		ZEND_NULL_HANDLER,
66520 		ZEND_NULL_HANDLER,
66521 		ZEND_NULL_HANDLER,
66522 		ZEND_NULL_HANDLER,
66523 		ZEND_NULL_HANDLER,
66524 		ZEND_NULL_HANDLER,
66525 		ZEND_NULL_HANDLER,
66526 		ZEND_NULL_HANDLER,
66527 		ZEND_NULL_HANDLER,
66528 		ZEND_NULL_HANDLER,
66529 		ZEND_NULL_HANDLER,
66530 		ZEND_NULL_HANDLER,
66531 		ZEND_NULL_HANDLER,
66532 		ZEND_NULL_HANDLER,
66533 		ZEND_NULL_HANDLER,
66534 		ZEND_NULL_HANDLER,
66535 		ZEND_NULL_HANDLER,
66536 		ZEND_NULL_HANDLER,
66537 		ZEND_NULL_HANDLER,
66538 		ZEND_NULL_HANDLER,
66539 		ZEND_NULL_HANDLER,
66540 		ZEND_NULL_HANDLER,
66541 		ZEND_NULL_HANDLER,
66542 		ZEND_NULL_HANDLER,
66543 		ZEND_NULL_HANDLER,
66544 		ZEND_NULL_HANDLER,
66545 		ZEND_NULL_HANDLER,
66546 		ZEND_NULL_HANDLER,
66547 		ZEND_NULL_HANDLER,
66548 		ZEND_NULL_HANDLER,
66549 		ZEND_NULL_HANDLER,
66550 		ZEND_NULL_HANDLER,
66551 		ZEND_NULL_HANDLER,
66552 		ZEND_NULL_HANDLER,
66553 		ZEND_NULL_HANDLER,
66554 		ZEND_NULL_HANDLER,
66555 		ZEND_NULL_HANDLER,
66556 		ZEND_NULL_HANDLER,
66557 		ZEND_NULL_HANDLER,
66558 		ZEND_NULL_HANDLER,
66559 		ZEND_NULL_HANDLER,
66560 		ZEND_NULL_HANDLER,
66561 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER,
66562 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER,
66563 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER,
66564 		ZEND_NULL_HANDLER,
66565 		ZEND_ASSIGN_OBJ_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
66566 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
66567 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
66568 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
66569 		ZEND_NULL_HANDLER,
66570 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
66571 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
66572 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
66573 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
66574 		ZEND_NULL_HANDLER,
66575 		ZEND_ASSIGN_OBJ_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
66576 		ZEND_NULL_HANDLER,
66577 		ZEND_NULL_HANDLER,
66578 		ZEND_NULL_HANDLER,
66579 		ZEND_NULL_HANDLER,
66580 		ZEND_NULL_HANDLER,
66581 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CONST_HANDLER,
66582 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_TMP_HANDLER,
66583 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_VAR_HANDLER,
66584 		ZEND_NULL_HANDLER,
66585 		ZEND_ASSIGN_OBJ_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
66586 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CONST_HANDLER,
66587 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_TMP_HANDLER,
66588 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_VAR_HANDLER,
66589 		ZEND_NULL_HANDLER,
66590 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CONST_OP_DATA_CV_HANDLER,
66591 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER,
66592 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER,
66593 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER,
66594 		ZEND_NULL_HANDLER,
66595 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER,
66596 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CONST_HANDLER,
66597 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_TMP_HANDLER,
66598 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_VAR_HANDLER,
66599 		ZEND_NULL_HANDLER,
66600 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_TMPVAR_OP_DATA_CV_HANDLER,
66601 		ZEND_NULL_HANDLER,
66602 		ZEND_NULL_HANDLER,
66603 		ZEND_NULL_HANDLER,
66604 		ZEND_NULL_HANDLER,
66605 		ZEND_NULL_HANDLER,
66606 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CONST_HANDLER,
66607 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_TMP_HANDLER,
66608 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_VAR_HANDLER,
66609 		ZEND_NULL_HANDLER,
66610 		ZEND_ASSIGN_OBJ_SPEC_UNUSED_CV_OP_DATA_CV_HANDLER,
66611 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CONST_HANDLER,
66612 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_TMP_HANDLER,
66613 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_VAR_HANDLER,
66614 		ZEND_NULL_HANDLER,
66615 		ZEND_ASSIGN_OBJ_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
66616 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
66617 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
66618 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
66619 		ZEND_NULL_HANDLER,
66620 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
66621 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
66622 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
66623 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
66624 		ZEND_NULL_HANDLER,
66625 		ZEND_ASSIGN_OBJ_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
66626 		ZEND_NULL_HANDLER,
66627 		ZEND_NULL_HANDLER,
66628 		ZEND_NULL_HANDLER,
66629 		ZEND_NULL_HANDLER,
66630 		ZEND_NULL_HANDLER,
66631 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CONST_HANDLER,
66632 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_TMP_HANDLER,
66633 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_VAR_HANDLER,
66634 		ZEND_NULL_HANDLER,
66635 		ZEND_ASSIGN_OBJ_SPEC_CV_CV_OP_DATA_CV_HANDLER,
66636 		ZEND_NULL_HANDLER,
66637 		ZEND_NULL_HANDLER,
66638 		ZEND_NULL_HANDLER,
66639 		ZEND_NULL_HANDLER,
66640 		ZEND_NULL_HANDLER,
66641 		ZEND_NULL_HANDLER,
66642 		ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER,
66643 		ZEND_NULL_HANDLER,
66644 		ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER,
66645 		ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER,
66646 		ZEND_NULL_HANDLER,
66647 		ZEND_INSTANCEOF_SPEC_TMPVAR_CONST_HANDLER,
66648 		ZEND_NULL_HANDLER,
66649 		ZEND_INSTANCEOF_SPEC_TMPVAR_VAR_HANDLER,
66650 		ZEND_INSTANCEOF_SPEC_TMPVAR_UNUSED_HANDLER,
66651 		ZEND_NULL_HANDLER,
66652 		ZEND_NULL_HANDLER,
66653 		ZEND_NULL_HANDLER,
66654 		ZEND_NULL_HANDLER,
66655 		ZEND_NULL_HANDLER,
66656 		ZEND_NULL_HANDLER,
66657 		ZEND_INSTANCEOF_SPEC_CV_CONST_HANDLER,
66658 		ZEND_NULL_HANDLER,
66659 		ZEND_INSTANCEOF_SPEC_CV_VAR_HANDLER,
66660 		ZEND_INSTANCEOF_SPEC_CV_UNUSED_HANDLER,
66661 		ZEND_NULL_HANDLER,
66662 		ZEND_DECLARE_CLASS_SPEC_HANDLER,
66663 		ZEND_NULL_HANDLER,
66664 		ZEND_NULL_HANDLER,
66665 		ZEND_DECLARE_INHERITED_CLASS_SPEC_VAR_HANDLER,
66666 		ZEND_NULL_HANDLER,
66667 		ZEND_NULL_HANDLER,
66668 		ZEND_DECLARE_FUNCTION_SPEC_HANDLER,
66669 		ZEND_YIELD_FROM_SPEC_CONST_HANDLER,
66670 		ZEND_YIELD_FROM_SPEC_TMP_HANDLER,
66671 		ZEND_YIELD_FROM_SPEC_VAR_HANDLER,
66672 		ZEND_NULL_HANDLER,
66673 		ZEND_YIELD_FROM_SPEC_CV_HANDLER,
66674 		ZEND_DECLARE_CONST_SPEC_CONST_CONST_HANDLER,
66675 		ZEND_NULL_HANDLER,
66676 		ZEND_NULL_HANDLER,
66677 		ZEND_NULL_HANDLER,
66678 		ZEND_NULL_HANDLER,
66679 		ZEND_NULL_HANDLER,
66680 		ZEND_NULL_HANDLER,
66681 		ZEND_NULL_HANDLER,
66682 		ZEND_NULL_HANDLER,
66683 		ZEND_NULL_HANDLER,
66684 		ZEND_NULL_HANDLER,
66685 		ZEND_NULL_HANDLER,
66686 		ZEND_NULL_HANDLER,
66687 		ZEND_NULL_HANDLER,
66688 		ZEND_NULL_HANDLER,
66689 		ZEND_NULL_HANDLER,
66690 		ZEND_NULL_HANDLER,
66691 		ZEND_NULL_HANDLER,
66692 		ZEND_NULL_HANDLER,
66693 		ZEND_NULL_HANDLER,
66694 		ZEND_NULL_HANDLER,
66695 		ZEND_NULL_HANDLER,
66696 		ZEND_NULL_HANDLER,
66697 		ZEND_NULL_HANDLER,
66698 		ZEND_NULL_HANDLER,
66699 		ZEND_ADD_INTERFACE_SPEC_CONST_HANDLER,
66700 		ZEND_NULL_HANDLER,
66701 		ZEND_NULL_HANDLER,
66702 		ZEND_NULL_HANDLER,
66703 		ZEND_NULL_HANDLER,
66704 		ZEND_NULL_HANDLER,
66705 		ZEND_NULL_HANDLER,
66706 		ZEND_DECLARE_INHERITED_CLASS_DELAYED_SPEC_VAR_HANDLER,
66707 		ZEND_NULL_HANDLER,
66708 		ZEND_NULL_HANDLER,
66709 		ZEND_VERIFY_ABSTRACT_CLASS_SPEC_HANDLER,
66710 		ZEND_NULL_HANDLER,
66711 		ZEND_NULL_HANDLER,
66712 		ZEND_NULL_HANDLER,
66713 		ZEND_NULL_HANDLER,
66714 		ZEND_NULL_HANDLER,
66715 		ZEND_NULL_HANDLER,
66716 		ZEND_NULL_HANDLER,
66717 		ZEND_NULL_HANDLER,
66718 		ZEND_NULL_HANDLER,
66719 		ZEND_NULL_HANDLER,
66720 		ZEND_NULL_HANDLER,
66721 		ZEND_NULL_HANDLER,
66722 		ZEND_NULL_HANDLER,
66723 		ZEND_NULL_HANDLER,
66724 		ZEND_NULL_HANDLER,
66725 		ZEND_NULL_HANDLER,
66726 		ZEND_NULL_HANDLER,
66727 		ZEND_NULL_HANDLER,
66728 		ZEND_NULL_HANDLER,
66729 		ZEND_NULL_HANDLER,
66730 		ZEND_NULL_HANDLER,
66731 		ZEND_NULL_HANDLER,
66732 		ZEND_NULL_HANDLER,
66733 		ZEND_NULL_HANDLER,
66734 		ZEND_NULL_HANDLER,
66735 		ZEND_NULL_HANDLER,
66736 		ZEND_NULL_HANDLER,
66737 		ZEND_NULL_HANDLER,
66738 		ZEND_NULL_HANDLER,
66739 		ZEND_NULL_HANDLER,
66740 		ZEND_NULL_HANDLER,
66741 		ZEND_NULL_HANDLER,
66742 		ZEND_NULL_HANDLER,
66743 		ZEND_NULL_HANDLER,
66744 		ZEND_NULL_HANDLER,
66745 		ZEND_NULL_HANDLER,
66746 		ZEND_NULL_HANDLER,
66747 		ZEND_NULL_HANDLER,
66748 		ZEND_NULL_HANDLER,
66749 		ZEND_NULL_HANDLER,
66750 		ZEND_NULL_HANDLER,
66751 		ZEND_NULL_HANDLER,
66752 		ZEND_NULL_HANDLER,
66753 		ZEND_NULL_HANDLER,
66754 		ZEND_NULL_HANDLER,
66755 		ZEND_NULL_HANDLER,
66756 		ZEND_NULL_HANDLER,
66757 		ZEND_NULL_HANDLER,
66758 		ZEND_NULL_HANDLER,
66759 		ZEND_NULL_HANDLER,
66760 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CONST_HANDLER,
66761 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_TMP_HANDLER,
66762 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_VAR_HANDLER,
66763 		ZEND_NULL_HANDLER,
66764 		ZEND_ASSIGN_DIM_SPEC_VAR_CONST_OP_DATA_CV_HANDLER,
66765 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
66766 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
66767 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
66768 		ZEND_NULL_HANDLER,
66769 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
66770 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CONST_HANDLER,
66771 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_TMP_HANDLER,
66772 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_VAR_HANDLER,
66773 		ZEND_NULL_HANDLER,
66774 		ZEND_ASSIGN_DIM_SPEC_VAR_TMPVAR_OP_DATA_CV_HANDLER,
66775 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CONST_HANDLER,
66776 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_TMP_HANDLER,
66777 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_VAR_HANDLER,
66778 		ZEND_NULL_HANDLER,
66779 		ZEND_ASSIGN_DIM_SPEC_VAR_UNUSED_OP_DATA_CV_HANDLER,
66780 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CONST_HANDLER,
66781 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_TMP_HANDLER,
66782 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_VAR_HANDLER,
66783 		ZEND_NULL_HANDLER,
66784 		ZEND_ASSIGN_DIM_SPEC_VAR_CV_OP_DATA_CV_HANDLER,
66785 		ZEND_NULL_HANDLER,
66786 		ZEND_NULL_HANDLER,
66787 		ZEND_NULL_HANDLER,
66788 		ZEND_NULL_HANDLER,
66789 		ZEND_NULL_HANDLER,
66790 		ZEND_NULL_HANDLER,
66791 		ZEND_NULL_HANDLER,
66792 		ZEND_NULL_HANDLER,
66793 		ZEND_NULL_HANDLER,
66794 		ZEND_NULL_HANDLER,
66795 		ZEND_NULL_HANDLER,
66796 		ZEND_NULL_HANDLER,
66797 		ZEND_NULL_HANDLER,
66798 		ZEND_NULL_HANDLER,
66799 		ZEND_NULL_HANDLER,
66800 		ZEND_NULL_HANDLER,
66801 		ZEND_NULL_HANDLER,
66802 		ZEND_NULL_HANDLER,
66803 		ZEND_NULL_HANDLER,
66804 		ZEND_NULL_HANDLER,
66805 		ZEND_NULL_HANDLER,
66806 		ZEND_NULL_HANDLER,
66807 		ZEND_NULL_HANDLER,
66808 		ZEND_NULL_HANDLER,
66809 		ZEND_NULL_HANDLER,
66810 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CONST_HANDLER,
66811 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_TMP_HANDLER,
66812 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_VAR_HANDLER,
66813 		ZEND_NULL_HANDLER,
66814 		ZEND_ASSIGN_DIM_SPEC_CV_CONST_OP_DATA_CV_HANDLER,
66815 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
66816 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
66817 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
66818 		ZEND_NULL_HANDLER,
66819 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
66820 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CONST_HANDLER,
66821 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_TMP_HANDLER,
66822 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_VAR_HANDLER,
66823 		ZEND_NULL_HANDLER,
66824 		ZEND_ASSIGN_DIM_SPEC_CV_TMPVAR_OP_DATA_CV_HANDLER,
66825 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CONST_HANDLER,
66826 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_TMP_HANDLER,
66827 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_VAR_HANDLER,
66828 		ZEND_NULL_HANDLER,
66829 		ZEND_ASSIGN_DIM_SPEC_CV_UNUSED_OP_DATA_CV_HANDLER,
66830 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CONST_HANDLER,
66831 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_TMP_HANDLER,
66832 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_VAR_HANDLER,
66833 		ZEND_NULL_HANDLER,
66834 		ZEND_ASSIGN_DIM_SPEC_CV_CV_OP_DATA_CV_HANDLER,
66835 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CONST_HANDLER,
66836 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER,
66837 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_TMPVAR_HANDLER,
66838 		ZEND_NULL_HANDLER,
66839 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CONST_CV_HANDLER,
66840 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER,
66841 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66842 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66843 		ZEND_NULL_HANDLER,
66844 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER,
66845 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CONST_HANDLER,
66846 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66847 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_TMPVAR_HANDLER,
66848 		ZEND_NULL_HANDLER,
66849 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_TMPVAR_CV_HANDLER,
66850 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CONST_HANDLER,
66851 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66852 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_TMPVAR_HANDLER,
66853 		ZEND_NULL_HANDLER,
66854 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_UNUSED_CV_HANDLER,
66855 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CONST_HANDLER,
66856 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER,
66857 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_TMPVAR_HANDLER,
66858 		ZEND_NULL_HANDLER,
66859 		ZEND_ISSET_ISEMPTY_PROP_OBJ_SPEC_CV_CV_HANDLER,
66860 		ZEND_HANDLE_EXCEPTION_SPEC_HANDLER,
66861 		ZEND_USER_OPCODE_SPEC_HANDLER,
66862 		ZEND_ASSERT_CHECK_SPEC_HANDLER,
66863 		ZEND_JMP_SET_SPEC_CONST_HANDLER,
66864 		ZEND_JMP_SET_SPEC_TMP_HANDLER,
66865 		ZEND_JMP_SET_SPEC_VAR_HANDLER,
66866 		ZEND_NULL_HANDLER,
66867 		ZEND_JMP_SET_SPEC_CV_HANDLER,
66868 		ZEND_NULL_HANDLER,
66869 		ZEND_NULL_HANDLER,
66870 		ZEND_NULL_HANDLER,
66871 		ZEND_DECLARE_LAMBDA_FUNCTION_SPEC_CONST_UNUSED_HANDLER,
66872 		ZEND_NULL_HANDLER,
66873 		ZEND_NULL_HANDLER,
66874 		ZEND_NULL_HANDLER,
66875 		ZEND_NULL_HANDLER,
66876 		ZEND_NULL_HANDLER,
66877 		ZEND_NULL_HANDLER,
66878 		ZEND_NULL_HANDLER,
66879 		ZEND_NULL_HANDLER,
66880 		ZEND_NULL_HANDLER,
66881 		ZEND_NULL_HANDLER,
66882 		ZEND_NULL_HANDLER,
66883 		ZEND_NULL_HANDLER,
66884 		ZEND_NULL_HANDLER,
66885 		ZEND_NULL_HANDLER,
66886 		ZEND_NULL_HANDLER,
66887 		ZEND_NULL_HANDLER,
66888 		ZEND_NULL_HANDLER,
66889 		ZEND_NULL_HANDLER,
66890 		ZEND_NULL_HANDLER,
66891 		ZEND_NULL_HANDLER,
66892 		ZEND_NULL_HANDLER,
66893 		ZEND_ADD_TRAIT_SPEC_HANDLER,
66894 		ZEND_BIND_TRAITS_SPEC_HANDLER,
66895 		ZEND_NULL_HANDLER,
66896 		ZEND_NULL_HANDLER,
66897 		ZEND_NULL_HANDLER,
66898 		ZEND_NULL_HANDLER,
66899 		ZEND_NULL_HANDLER,
66900 		ZEND_NULL_HANDLER,
66901 		ZEND_NULL_HANDLER,
66902 		ZEND_NULL_HANDLER,
66903 		ZEND_NULL_HANDLER,
66904 		ZEND_NULL_HANDLER,
66905 		ZEND_NULL_HANDLER,
66906 		ZEND_NULL_HANDLER,
66907 		ZEND_NULL_HANDLER,
66908 		ZEND_SEPARATE_SPEC_VAR_UNUSED_HANDLER,
66909 		ZEND_NULL_HANDLER,
66910 		ZEND_NULL_HANDLER,
66911 		ZEND_NULL_HANDLER,
66912 		ZEND_NULL_HANDLER,
66913 		ZEND_NULL_HANDLER,
66914 		ZEND_NULL_HANDLER,
66915 		ZEND_NULL_HANDLER,
66916 		ZEND_NULL_HANDLER,
66917 		ZEND_NULL_HANDLER,
66918 		ZEND_NULL_HANDLER,
66919 		ZEND_NULL_HANDLER,
66920 		ZEND_FETCH_CLASS_NAME_SPEC_HANDLER,
66921 		ZEND_CALL_TRAMPOLINE_SPEC_HANDLER,
66922 		ZEND_DISCARD_EXCEPTION_SPEC_HANDLER,
66923 		ZEND_YIELD_SPEC_CONST_CONST_HANDLER,
66924 		ZEND_YIELD_SPEC_CONST_TMP_HANDLER,
66925 		ZEND_YIELD_SPEC_CONST_VAR_HANDLER,
66926 		ZEND_YIELD_SPEC_CONST_UNUSED_HANDLER,
66927 		ZEND_YIELD_SPEC_CONST_CV_HANDLER,
66928 		ZEND_YIELD_SPEC_TMP_CONST_HANDLER,
66929 		ZEND_YIELD_SPEC_TMP_TMP_HANDLER,
66930 		ZEND_YIELD_SPEC_TMP_VAR_HANDLER,
66931 		ZEND_YIELD_SPEC_TMP_UNUSED_HANDLER,
66932 		ZEND_YIELD_SPEC_TMP_CV_HANDLER,
66933 		ZEND_YIELD_SPEC_VAR_CONST_HANDLER,
66934 		ZEND_YIELD_SPEC_VAR_TMP_HANDLER,
66935 		ZEND_YIELD_SPEC_VAR_VAR_HANDLER,
66936 		ZEND_YIELD_SPEC_VAR_UNUSED_HANDLER,
66937 		ZEND_YIELD_SPEC_VAR_CV_HANDLER,
66938 		ZEND_YIELD_SPEC_UNUSED_CONST_HANDLER,
66939 		ZEND_YIELD_SPEC_UNUSED_TMP_HANDLER,
66940 		ZEND_YIELD_SPEC_UNUSED_VAR_HANDLER,
66941 		ZEND_YIELD_SPEC_UNUSED_UNUSED_HANDLER,
66942 		ZEND_YIELD_SPEC_UNUSED_CV_HANDLER,
66943 		ZEND_YIELD_SPEC_CV_CONST_HANDLER,
66944 		ZEND_YIELD_SPEC_CV_TMP_HANDLER,
66945 		ZEND_YIELD_SPEC_CV_VAR_HANDLER,
66946 		ZEND_YIELD_SPEC_CV_UNUSED_HANDLER,
66947 		ZEND_YIELD_SPEC_CV_CV_HANDLER,
66948 		ZEND_GENERATOR_RETURN_SPEC_CONST_HANDLER,
66949 		ZEND_GENERATOR_RETURN_SPEC_TMP_HANDLER,
66950 		ZEND_GENERATOR_RETURN_SPEC_VAR_HANDLER,
66951 		ZEND_NULL_HANDLER,
66952 		ZEND_GENERATOR_RETURN_SPEC_CV_HANDLER,
66953 		ZEND_FAST_CALL_SPEC_HANDLER,
66954 		ZEND_FAST_RET_SPEC_HANDLER,
66955 		ZEND_RECV_VARIADIC_SPEC_HANDLER,
66956 		ZEND_SEND_UNPACK_SPEC_HANDLER,
66957 		ZEND_POW_SPEC_CONST_CONST_HANDLER,
66958 		ZEND_POW_SPEC_CONST_TMPVAR_HANDLER,
66959 		ZEND_POW_SPEC_CONST_TMPVAR_HANDLER,
66960 		ZEND_NULL_HANDLER,
66961 		ZEND_POW_SPEC_CONST_CV_HANDLER,
66962 		ZEND_POW_SPEC_TMPVAR_CONST_HANDLER,
66963 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
66964 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
66965 		ZEND_NULL_HANDLER,
66966 		ZEND_POW_SPEC_TMPVAR_CV_HANDLER,
66967 		ZEND_POW_SPEC_TMPVAR_CONST_HANDLER,
66968 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
66969 		ZEND_POW_SPEC_TMPVAR_TMPVAR_HANDLER,
66970 		ZEND_NULL_HANDLER,
66971 		ZEND_POW_SPEC_TMPVAR_CV_HANDLER,
66972 		ZEND_NULL_HANDLER,
66973 		ZEND_NULL_HANDLER,
66974 		ZEND_NULL_HANDLER,
66975 		ZEND_NULL_HANDLER,
66976 		ZEND_NULL_HANDLER,
66977 		ZEND_POW_SPEC_CV_CONST_HANDLER,
66978 		ZEND_POW_SPEC_CV_TMPVAR_HANDLER,
66979 		ZEND_POW_SPEC_CV_TMPVAR_HANDLER,
66980 		ZEND_NULL_HANDLER,
66981 		ZEND_POW_SPEC_CV_CV_HANDLER,
66982 		ZEND_NULL_HANDLER,
66983 		ZEND_NULL_HANDLER,
66984 		ZEND_NULL_HANDLER,
66985 		ZEND_NULL_HANDLER,
66986 		ZEND_NULL_HANDLER,
66987 		ZEND_NULL_HANDLER,
66988 		ZEND_NULL_HANDLER,
66989 		ZEND_NULL_HANDLER,
66990 		ZEND_NULL_HANDLER,
66991 		ZEND_NULL_HANDLER,
66992 		ZEND_NULL_HANDLER,
66993 		ZEND_NULL_HANDLER,
66994 		ZEND_NULL_HANDLER,
66995 		ZEND_NULL_HANDLER,
66996 		ZEND_NULL_HANDLER,
66997 		ZEND_NULL_HANDLER,
66998 		ZEND_NULL_HANDLER,
66999 		ZEND_NULL_HANDLER,
67000 		ZEND_NULL_HANDLER,
67001 		ZEND_NULL_HANDLER,
67002 		ZEND_NULL_HANDLER,
67003 		ZEND_NULL_HANDLER,
67004 		ZEND_NULL_HANDLER,
67005 		ZEND_NULL_HANDLER,
67006 		ZEND_NULL_HANDLER,
67007 		ZEND_NULL_HANDLER,
67008 		ZEND_NULL_HANDLER,
67009 		ZEND_NULL_HANDLER,
67010 		ZEND_NULL_HANDLER,
67011 		ZEND_NULL_HANDLER,
67012 		ZEND_ASSIGN_POW_SPEC_VAR_CONST_HANDLER,
67013 		ZEND_ASSIGN_POW_SPEC_VAR_CONST_DIM_HANDLER,
67014 		ZEND_ASSIGN_POW_SPEC_VAR_CONST_OBJ_HANDLER,
67015 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER,
67016 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER,
67017 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER,
67018 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_HANDLER,
67019 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_DIM_HANDLER,
67020 		ZEND_ASSIGN_POW_SPEC_VAR_TMPVAR_OBJ_HANDLER,
67021 		ZEND_NULL_HANDLER,
67022 		ZEND_ASSIGN_POW_SPEC_VAR_UNUSED_DIM_HANDLER,
67023 		ZEND_NULL_HANDLER,
67024 		ZEND_ASSIGN_POW_SPEC_VAR_CV_HANDLER,
67025 		ZEND_ASSIGN_POW_SPEC_VAR_CV_DIM_HANDLER,
67026 		ZEND_ASSIGN_POW_SPEC_VAR_CV_OBJ_HANDLER,
67027 		ZEND_NULL_HANDLER,
67028 		ZEND_NULL_HANDLER,
67029 		ZEND_ASSIGN_POW_SPEC_UNUSED_CONST_OBJ_HANDLER,
67030 		ZEND_NULL_HANDLER,
67031 		ZEND_NULL_HANDLER,
67032 		ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
67033 		ZEND_NULL_HANDLER,
67034 		ZEND_NULL_HANDLER,
67035 		ZEND_ASSIGN_POW_SPEC_UNUSED_TMPVAR_OBJ_HANDLER,
67036 		ZEND_NULL_HANDLER,
67037 		ZEND_NULL_HANDLER,
67038 		ZEND_NULL_HANDLER,
67039 		ZEND_NULL_HANDLER,
67040 		ZEND_NULL_HANDLER,
67041 		ZEND_ASSIGN_POW_SPEC_UNUSED_CV_OBJ_HANDLER,
67042 		ZEND_ASSIGN_POW_SPEC_CV_CONST_HANDLER,
67043 		ZEND_ASSIGN_POW_SPEC_CV_CONST_DIM_HANDLER,
67044 		ZEND_ASSIGN_POW_SPEC_CV_CONST_OBJ_HANDLER,
67045 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER,
67046 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER,
67047 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER,
67048 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_HANDLER,
67049 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_DIM_HANDLER,
67050 		ZEND_ASSIGN_POW_SPEC_CV_TMPVAR_OBJ_HANDLER,
67051 		ZEND_NULL_HANDLER,
67052 		ZEND_ASSIGN_POW_SPEC_CV_UNUSED_DIM_HANDLER,
67053 		ZEND_NULL_HANDLER,
67054 		ZEND_ASSIGN_POW_SPEC_CV_CV_HANDLER,
67055 		ZEND_ASSIGN_POW_SPEC_CV_CV_DIM_HANDLER,
67056 		ZEND_ASSIGN_POW_SPEC_CV_CV_OBJ_HANDLER,
67057 		ZEND_NULL_HANDLER,
67058 		ZEND_NULL_HANDLER,
67059 		ZEND_NULL_HANDLER,
67060 		ZEND_NULL_HANDLER,
67061 		ZEND_NULL_HANDLER,
67062 		ZEND_NULL_HANDLER,
67063 		ZEND_NULL_HANDLER,
67064 		ZEND_NULL_HANDLER,
67065 		ZEND_NULL_HANDLER,
67066 		ZEND_NULL_HANDLER,
67067 		ZEND_NULL_HANDLER,
67068 		ZEND_NULL_HANDLER,
67069 		ZEND_NULL_HANDLER,
67070 		ZEND_NULL_HANDLER,
67071 		ZEND_NULL_HANDLER,
67072 		ZEND_NULL_HANDLER,
67073 		ZEND_NULL_HANDLER,
67074 		ZEND_NULL_HANDLER,
67075 		ZEND_NULL_HANDLER,
67076 		ZEND_NULL_HANDLER,
67077 		ZEND_BIND_GLOBAL_SPEC_CV_CONST_HANDLER,
67078 		ZEND_NULL_HANDLER,
67079 		ZEND_NULL_HANDLER,
67080 		ZEND_NULL_HANDLER,
67081 		ZEND_NULL_HANDLER,
67082 		ZEND_COALESCE_SPEC_CONST_HANDLER,
67083 		ZEND_COALESCE_SPEC_TMP_HANDLER,
67084 		ZEND_COALESCE_SPEC_VAR_HANDLER,
67085 		ZEND_NULL_HANDLER,
67086 		ZEND_COALESCE_SPEC_CV_HANDLER,
67087 		ZEND_SPACESHIP_SPEC_CONST_CONST_HANDLER,
67088 		ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER,
67089 		ZEND_SPACESHIP_SPEC_CONST_TMPVAR_HANDLER,
67090 		ZEND_NULL_HANDLER,
67091 		ZEND_SPACESHIP_SPEC_CONST_CV_HANDLER,
67092 		ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER,
67093 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
67094 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
67095 		ZEND_NULL_HANDLER,
67096 		ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER,
67097 		ZEND_SPACESHIP_SPEC_TMPVAR_CONST_HANDLER,
67098 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
67099 		ZEND_SPACESHIP_SPEC_TMPVAR_TMPVAR_HANDLER,
67100 		ZEND_NULL_HANDLER,
67101 		ZEND_SPACESHIP_SPEC_TMPVAR_CV_HANDLER,
67102 		ZEND_NULL_HANDLER,
67103 		ZEND_NULL_HANDLER,
67104 		ZEND_NULL_HANDLER,
67105 		ZEND_NULL_HANDLER,
67106 		ZEND_NULL_HANDLER,
67107 		ZEND_SPACESHIP_SPEC_CV_CONST_HANDLER,
67108 		ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER,
67109 		ZEND_SPACESHIP_SPEC_CV_TMPVAR_HANDLER,
67110 		ZEND_NULL_HANDLER,
67111 		ZEND_SPACESHIP_SPEC_CV_CV_HANDLER,
67112 		ZEND_DECLARE_ANON_CLASS_SPEC_HANDLER,
67113 		ZEND_NULL_HANDLER,
67114 		ZEND_NULL_HANDLER,
67115 		ZEND_DECLARE_ANON_INHERITED_CLASS_SPEC_VAR_HANDLER,
67116 		ZEND_NULL_HANDLER,
67117 		ZEND_NULL_HANDLER,
67118 		ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_CONST_HANDLER,
67119 		ZEND_NULL_HANDLER,
67120 		ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_VAR_HANDLER,
67121 		ZEND_FETCH_STATIC_PROP_R_SPEC_CONST_UNUSED_HANDLER,
67122 		ZEND_NULL_HANDLER,
67123 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER,
67124 		ZEND_NULL_HANDLER,
67125 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER,
67126 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER,
67127 		ZEND_NULL_HANDLER,
67128 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_CONST_HANDLER,
67129 		ZEND_NULL_HANDLER,
67130 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_VAR_HANDLER,
67131 		ZEND_FETCH_STATIC_PROP_R_SPEC_TMPVAR_UNUSED_HANDLER,
67132 		ZEND_NULL_HANDLER,
67133 		ZEND_NULL_HANDLER,
67134 		ZEND_NULL_HANDLER,
67135 		ZEND_NULL_HANDLER,
67136 		ZEND_NULL_HANDLER,
67137 		ZEND_NULL_HANDLER,
67138 		ZEND_FETCH_STATIC_PROP_R_SPEC_CV_CONST_HANDLER,
67139 		ZEND_NULL_HANDLER,
67140 		ZEND_FETCH_STATIC_PROP_R_SPEC_CV_VAR_HANDLER,
67141 		ZEND_FETCH_STATIC_PROP_R_SPEC_CV_UNUSED_HANDLER,
67142 		ZEND_NULL_HANDLER,
67143 		ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_CONST_HANDLER,
67144 		ZEND_NULL_HANDLER,
67145 		ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_VAR_HANDLER,
67146 		ZEND_FETCH_STATIC_PROP_W_SPEC_CONST_UNUSED_HANDLER,
67147 		ZEND_NULL_HANDLER,
67148 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER,
67149 		ZEND_NULL_HANDLER,
67150 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER,
67151 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER,
67152 		ZEND_NULL_HANDLER,
67153 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_CONST_HANDLER,
67154 		ZEND_NULL_HANDLER,
67155 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_VAR_HANDLER,
67156 		ZEND_FETCH_STATIC_PROP_W_SPEC_TMPVAR_UNUSED_HANDLER,
67157 		ZEND_NULL_HANDLER,
67158 		ZEND_NULL_HANDLER,
67159 		ZEND_NULL_HANDLER,
67160 		ZEND_NULL_HANDLER,
67161 		ZEND_NULL_HANDLER,
67162 		ZEND_NULL_HANDLER,
67163 		ZEND_FETCH_STATIC_PROP_W_SPEC_CV_CONST_HANDLER,
67164 		ZEND_NULL_HANDLER,
67165 		ZEND_FETCH_STATIC_PROP_W_SPEC_CV_VAR_HANDLER,
67166 		ZEND_FETCH_STATIC_PROP_W_SPEC_CV_UNUSED_HANDLER,
67167 		ZEND_NULL_HANDLER,
67168 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_CONST_HANDLER,
67169 		ZEND_NULL_HANDLER,
67170 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_VAR_HANDLER,
67171 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CONST_UNUSED_HANDLER,
67172 		ZEND_NULL_HANDLER,
67173 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER,
67174 		ZEND_NULL_HANDLER,
67175 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER,
67176 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER,
67177 		ZEND_NULL_HANDLER,
67178 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_CONST_HANDLER,
67179 		ZEND_NULL_HANDLER,
67180 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_VAR_HANDLER,
67181 		ZEND_FETCH_STATIC_PROP_RW_SPEC_TMPVAR_UNUSED_HANDLER,
67182 		ZEND_NULL_HANDLER,
67183 		ZEND_NULL_HANDLER,
67184 		ZEND_NULL_HANDLER,
67185 		ZEND_NULL_HANDLER,
67186 		ZEND_NULL_HANDLER,
67187 		ZEND_NULL_HANDLER,
67188 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_CONST_HANDLER,
67189 		ZEND_NULL_HANDLER,
67190 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_VAR_HANDLER,
67191 		ZEND_FETCH_STATIC_PROP_RW_SPEC_CV_UNUSED_HANDLER,
67192 		ZEND_NULL_HANDLER,
67193 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_CONST_HANDLER,
67194 		ZEND_NULL_HANDLER,
67195 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_VAR_HANDLER,
67196 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CONST_UNUSED_HANDLER,
67197 		ZEND_NULL_HANDLER,
67198 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER,
67199 		ZEND_NULL_HANDLER,
67200 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER,
67201 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER,
67202 		ZEND_NULL_HANDLER,
67203 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_CONST_HANDLER,
67204 		ZEND_NULL_HANDLER,
67205 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_VAR_HANDLER,
67206 		ZEND_FETCH_STATIC_PROP_IS_SPEC_TMPVAR_UNUSED_HANDLER,
67207 		ZEND_NULL_HANDLER,
67208 		ZEND_NULL_HANDLER,
67209 		ZEND_NULL_HANDLER,
67210 		ZEND_NULL_HANDLER,
67211 		ZEND_NULL_HANDLER,
67212 		ZEND_NULL_HANDLER,
67213 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_CONST_HANDLER,
67214 		ZEND_NULL_HANDLER,
67215 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_VAR_HANDLER,
67216 		ZEND_FETCH_STATIC_PROP_IS_SPEC_CV_UNUSED_HANDLER,
67217 		ZEND_NULL_HANDLER,
67218 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_CONST_HANDLER,
67219 		ZEND_NULL_HANDLER,
67220 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_VAR_HANDLER,
67221 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CONST_UNUSED_HANDLER,
67222 		ZEND_NULL_HANDLER,
67223 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER,
67224 		ZEND_NULL_HANDLER,
67225 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER,
67226 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
67227 		ZEND_NULL_HANDLER,
67228 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_CONST_HANDLER,
67229 		ZEND_NULL_HANDLER,
67230 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_VAR_HANDLER,
67231 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_TMPVAR_UNUSED_HANDLER,
67232 		ZEND_NULL_HANDLER,
67233 		ZEND_NULL_HANDLER,
67234 		ZEND_NULL_HANDLER,
67235 		ZEND_NULL_HANDLER,
67236 		ZEND_NULL_HANDLER,
67237 		ZEND_NULL_HANDLER,
67238 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_CONST_HANDLER,
67239 		ZEND_NULL_HANDLER,
67240 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_VAR_HANDLER,
67241 		ZEND_FETCH_STATIC_PROP_FUNC_ARG_SPEC_CV_UNUSED_HANDLER,
67242 		ZEND_NULL_HANDLER,
67243 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_CONST_HANDLER,
67244 		ZEND_NULL_HANDLER,
67245 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_VAR_HANDLER,
67246 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CONST_UNUSED_HANDLER,
67247 		ZEND_NULL_HANDLER,
67248 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER,
67249 		ZEND_NULL_HANDLER,
67250 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER,
67251 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
67252 		ZEND_NULL_HANDLER,
67253 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_CONST_HANDLER,
67254 		ZEND_NULL_HANDLER,
67255 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_VAR_HANDLER,
67256 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_TMPVAR_UNUSED_HANDLER,
67257 		ZEND_NULL_HANDLER,
67258 		ZEND_NULL_HANDLER,
67259 		ZEND_NULL_HANDLER,
67260 		ZEND_NULL_HANDLER,
67261 		ZEND_NULL_HANDLER,
67262 		ZEND_NULL_HANDLER,
67263 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_CONST_HANDLER,
67264 		ZEND_NULL_HANDLER,
67265 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_VAR_HANDLER,
67266 		ZEND_FETCH_STATIC_PROP_UNSET_SPEC_CV_UNUSED_HANDLER,
67267 		ZEND_NULL_HANDLER,
67268 		ZEND_UNSET_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
67269 		ZEND_NULL_HANDLER,
67270 		ZEND_UNSET_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
67271 		ZEND_UNSET_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
67272 		ZEND_NULL_HANDLER,
67273 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
67274 		ZEND_NULL_HANDLER,
67275 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
67276 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
67277 		ZEND_NULL_HANDLER,
67278 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
67279 		ZEND_NULL_HANDLER,
67280 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
67281 		ZEND_UNSET_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
67282 		ZEND_NULL_HANDLER,
67283 		ZEND_NULL_HANDLER,
67284 		ZEND_NULL_HANDLER,
67285 		ZEND_NULL_HANDLER,
67286 		ZEND_NULL_HANDLER,
67287 		ZEND_NULL_HANDLER,
67288 		ZEND_UNSET_STATIC_PROP_SPEC_CV_CONST_HANDLER,
67289 		ZEND_NULL_HANDLER,
67290 		ZEND_UNSET_STATIC_PROP_SPEC_CV_VAR_HANDLER,
67291 		ZEND_UNSET_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
67292 		ZEND_NULL_HANDLER,
67293 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_CONST_HANDLER,
67294 		ZEND_NULL_HANDLER,
67295 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_VAR_HANDLER,
67296 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CONST_UNUSED_HANDLER,
67297 		ZEND_NULL_HANDLER,
67298 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
67299 		ZEND_NULL_HANDLER,
67300 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
67301 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
67302 		ZEND_NULL_HANDLER,
67303 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_CONST_HANDLER,
67304 		ZEND_NULL_HANDLER,
67305 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_VAR_HANDLER,
67306 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_TMPVAR_UNUSED_HANDLER,
67307 		ZEND_NULL_HANDLER,
67308 		ZEND_NULL_HANDLER,
67309 		ZEND_NULL_HANDLER,
67310 		ZEND_NULL_HANDLER,
67311 		ZEND_NULL_HANDLER,
67312 		ZEND_NULL_HANDLER,
67313 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_CONST_HANDLER,
67314 		ZEND_NULL_HANDLER,
67315 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_VAR_HANDLER,
67316 		ZEND_ISSET_ISEMPTY_STATIC_PROP_SPEC_CV_UNUSED_HANDLER,
67317 		ZEND_NULL_HANDLER,
67318 		ZEND_FETCH_CLASS_CONSTANT_SPEC_CONST_CONST_HANDLER,
67319 		ZEND_NULL_HANDLER,
67320 		ZEND_NULL_HANDLER,
67321 		ZEND_NULL_HANDLER,
67322 		ZEND_NULL_HANDLER,
67323 		ZEND_NULL_HANDLER,
67324 		ZEND_NULL_HANDLER,
67325 		ZEND_NULL_HANDLER,
67326 		ZEND_NULL_HANDLER,
67327 		ZEND_NULL_HANDLER,
67328 		ZEND_FETCH_CLASS_CONSTANT_SPEC_VAR_CONST_HANDLER,
67329 		ZEND_NULL_HANDLER,
67330 		ZEND_NULL_HANDLER,
67331 		ZEND_NULL_HANDLER,
67332 		ZEND_NULL_HANDLER,
67333 		ZEND_FETCH_CLASS_CONSTANT_SPEC_UNUSED_CONST_HANDLER,
67334 		ZEND_NULL_HANDLER,
67335 		ZEND_NULL_HANDLER,
67336 		ZEND_NULL_HANDLER,
67337 		ZEND_NULL_HANDLER,
67338 		ZEND_NULL_HANDLER,
67339 		ZEND_NULL_HANDLER,
67340 		ZEND_NULL_HANDLER,
67341 		ZEND_NULL_HANDLER,
67342 		ZEND_NULL_HANDLER,
67343 		ZEND_NULL_HANDLER,
67344 		ZEND_NULL_HANDLER,
67345 		ZEND_NULL_HANDLER,
67346 		ZEND_NULL_HANDLER,
67347 		ZEND_NULL_HANDLER,
67348 		ZEND_NULL_HANDLER,
67349 		ZEND_NULL_HANDLER,
67350 		ZEND_NULL_HANDLER,
67351 		ZEND_NULL_HANDLER,
67352 		ZEND_BIND_LEXICAL_SPEC_TMP_CV_HANDLER,
67353 		ZEND_NULL_HANDLER,
67354 		ZEND_NULL_HANDLER,
67355 		ZEND_NULL_HANDLER,
67356 		ZEND_NULL_HANDLER,
67357 		ZEND_NULL_HANDLER,
67358 		ZEND_NULL_HANDLER,
67359 		ZEND_NULL_HANDLER,
67360 		ZEND_NULL_HANDLER,
67361 		ZEND_NULL_HANDLER,
67362 		ZEND_NULL_HANDLER,
67363 		ZEND_NULL_HANDLER,
67364 		ZEND_NULL_HANDLER,
67365 		ZEND_NULL_HANDLER,
67366 		ZEND_NULL_HANDLER,
67367 		ZEND_NULL_HANDLER,
67368 		ZEND_NULL_HANDLER,
67369 		ZEND_NULL_HANDLER,
67370 		ZEND_NULL_HANDLER,
67371 		ZEND_NULL_HANDLER,
67372 		ZEND_NULL_HANDLER,
67373 		ZEND_NULL_HANDLER,
67374 		ZEND_NULL_HANDLER,
67375 		ZEND_NULL_HANDLER,
67376 		ZEND_NULL_HANDLER,
67377 		ZEND_NULL_HANDLER,
67378 		ZEND_NULL_HANDLER,
67379 		ZEND_NULL_HANDLER,
67380 		ZEND_NULL_HANDLER,
67381 		ZEND_NULL_HANDLER,
67382 		ZEND_NULL_HANDLER,
67383 		ZEND_NULL_HANDLER,
67384 		ZEND_NULL_HANDLER,
67385 		ZEND_NULL_HANDLER,
67386 		ZEND_NULL_HANDLER,
67387 		ZEND_NULL_HANDLER,
67388 		ZEND_BIND_STATIC_SPEC_CV_CONST_HANDLER,
67389 		ZEND_NULL_HANDLER,
67390 		ZEND_NULL_HANDLER,
67391 		ZEND_NULL_HANDLER,
67392 		ZEND_NULL_HANDLER,
67393 		ZEND_NULL_HANDLER,
67394 		ZEND_NULL_HANDLER,
67395 		ZEND_NULL_HANDLER,
67396 		ZEND_NULL_HANDLER,
67397 		ZEND_NULL_HANDLER,
67398 		ZEND_NULL_HANDLER,
67399 		ZEND_NULL_HANDLER,
67400 		ZEND_NULL_HANDLER,
67401 		ZEND_NULL_HANDLER,
67402 		ZEND_NULL_HANDLER,
67403 		ZEND_NULL_HANDLER,
67404 		ZEND_NULL_HANDLER,
67405 		ZEND_NULL_HANDLER,
67406 		ZEND_NULL_HANDLER,
67407 		ZEND_NULL_HANDLER,
67408 		ZEND_NULL_HANDLER,
67409 		ZEND_NULL_HANDLER,
67410 		ZEND_NULL_HANDLER,
67411 		ZEND_FETCH_THIS_SPEC_UNUSED_UNUSED_HANDLER,
67412 		ZEND_NULL_HANDLER,
67413 		ZEND_NULL_HANDLER,
67414 		ZEND_NULL_HANDLER,
67415 		ZEND_NULL_HANDLER,
67416 		ZEND_NULL_HANDLER,
67417 		ZEND_NULL_HANDLER,
67418 		ZEND_NULL_HANDLER,
67419 		ZEND_NULL_HANDLER,
67420 		ZEND_NULL_HANDLER,
67421 		ZEND_NULL_HANDLER,
67422 		ZEND_NULL_HANDLER,
67423 		ZEND_NULL_HANDLER,
67424 		ZEND_NULL_HANDLER,
67425 		ZEND_NULL_HANDLER,
67426 		ZEND_NULL_HANDLER,
67427 		ZEND_NULL_HANDLER,
67428 		ZEND_NULL_HANDLER,
67429 		ZEND_NULL_HANDLER,
67430 		ZEND_NULL_HANDLER,
67431 		ZEND_NULL_HANDLER,
67432 		ZEND_NULL_HANDLER,
67433 		ZEND_NULL_HANDLER,
67434 		ZEND_NULL_HANDLER,
67435 		ZEND_NULL_HANDLER,
67436 		ZEND_ISSET_ISEMPTY_THIS_SPEC_UNUSED_UNUSED_HANDLER,
67437 		ZEND_NULL_HANDLER,
67438 		ZEND_NULL_HANDLER,
67439 		ZEND_NULL_HANDLER,
67440 		ZEND_NULL_HANDLER,
67441 		ZEND_NULL_HANDLER,
67442 		ZEND_NULL_HANDLER,
67443 		ZEND_SWITCH_LONG_SPEC_CONST_CONST_HANDLER,
67444 		ZEND_NULL_HANDLER,
67445 		ZEND_NULL_HANDLER,
67446 		ZEND_NULL_HANDLER,
67447 		ZEND_NULL_HANDLER,
67448 		ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_HANDLER,
67449 		ZEND_NULL_HANDLER,
67450 		ZEND_NULL_HANDLER,
67451 		ZEND_NULL_HANDLER,
67452 		ZEND_NULL_HANDLER,
67453 		ZEND_SWITCH_LONG_SPEC_TMPVAR_CONST_HANDLER,
67454 		ZEND_NULL_HANDLER,
67455 		ZEND_NULL_HANDLER,
67456 		ZEND_NULL_HANDLER,
67457 		ZEND_NULL_HANDLER,
67458 		ZEND_NULL_HANDLER,
67459 		ZEND_NULL_HANDLER,
67460 		ZEND_NULL_HANDLER,
67461 		ZEND_NULL_HANDLER,
67462 		ZEND_NULL_HANDLER,
67463 		ZEND_SWITCH_LONG_SPEC_CV_CONST_HANDLER,
67464 		ZEND_NULL_HANDLER,
67465 		ZEND_NULL_HANDLER,
67466 		ZEND_NULL_HANDLER,
67467 		ZEND_NULL_HANDLER,
67468 		ZEND_SWITCH_STRING_SPEC_CONST_CONST_HANDLER,
67469 		ZEND_NULL_HANDLER,
67470 		ZEND_NULL_HANDLER,
67471 		ZEND_NULL_HANDLER,
67472 		ZEND_NULL_HANDLER,
67473 		ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_HANDLER,
67474 		ZEND_NULL_HANDLER,
67475 		ZEND_NULL_HANDLER,
67476 		ZEND_NULL_HANDLER,
67477 		ZEND_NULL_HANDLER,
67478 		ZEND_SWITCH_STRING_SPEC_TMPVAR_CONST_HANDLER,
67479 		ZEND_NULL_HANDLER,
67480 		ZEND_NULL_HANDLER,
67481 		ZEND_NULL_HANDLER,
67482 		ZEND_NULL_HANDLER,
67483 		ZEND_NULL_HANDLER,
67484 		ZEND_NULL_HANDLER,
67485 		ZEND_NULL_HANDLER,
67486 		ZEND_NULL_HANDLER,
67487 		ZEND_NULL_HANDLER,
67488 		ZEND_SWITCH_STRING_SPEC_CV_CONST_HANDLER,
67489 		ZEND_NULL_HANDLER,
67490 		ZEND_NULL_HANDLER,
67491 		ZEND_NULL_HANDLER,
67492 		ZEND_NULL_HANDLER,
67493 		ZEND_IN_ARRAY_SPEC_CONST_CONST_HANDLER,
67494 		ZEND_NULL_HANDLER,
67495 		ZEND_NULL_HANDLER,
67496 		ZEND_NULL_HANDLER,
67497 		ZEND_NULL_HANDLER,
67498 		ZEND_IN_ARRAY_SPEC_TMP_CONST_HANDLER,
67499 		ZEND_NULL_HANDLER,
67500 		ZEND_NULL_HANDLER,
67501 		ZEND_NULL_HANDLER,
67502 		ZEND_NULL_HANDLER,
67503 		ZEND_IN_ARRAY_SPEC_VAR_CONST_HANDLER,
67504 		ZEND_NULL_HANDLER,
67505 		ZEND_NULL_HANDLER,
67506 		ZEND_NULL_HANDLER,
67507 		ZEND_NULL_HANDLER,
67508 		ZEND_NULL_HANDLER,
67509 		ZEND_NULL_HANDLER,
67510 		ZEND_NULL_HANDLER,
67511 		ZEND_NULL_HANDLER,
67512 		ZEND_NULL_HANDLER,
67513 		ZEND_IN_ARRAY_SPEC_CV_CONST_HANDLER,
67514 		ZEND_NULL_HANDLER,
67515 		ZEND_NULL_HANDLER,
67516 		ZEND_NULL_HANDLER,
67517 		ZEND_NULL_HANDLER,
67518 		ZEND_NULL_HANDLER,
67519 		ZEND_NULL_HANDLER,
67520 		ZEND_NULL_HANDLER,
67521 		ZEND_COUNT_SPEC_CONST_UNUSED_HANDLER,
67522 		ZEND_NULL_HANDLER,
67523 		ZEND_NULL_HANDLER,
67524 		ZEND_NULL_HANDLER,
67525 		ZEND_NULL_HANDLER,
67526 		ZEND_COUNT_SPEC_TMP_UNUSED_HANDLER,
67527 		ZEND_NULL_HANDLER,
67528 		ZEND_NULL_HANDLER,
67529 		ZEND_NULL_HANDLER,
67530 		ZEND_NULL_HANDLER,
67531 		ZEND_COUNT_SPEC_VAR_UNUSED_HANDLER,
67532 		ZEND_NULL_HANDLER,
67533 		ZEND_NULL_HANDLER,
67534 		ZEND_NULL_HANDLER,
67535 		ZEND_NULL_HANDLER,
67536 		ZEND_NULL_HANDLER,
67537 		ZEND_NULL_HANDLER,
67538 		ZEND_NULL_HANDLER,
67539 		ZEND_NULL_HANDLER,
67540 		ZEND_NULL_HANDLER,
67541 		ZEND_COUNT_SPEC_CV_UNUSED_HANDLER,
67542 		ZEND_NULL_HANDLER,
67543 		ZEND_NULL_HANDLER,
67544 		ZEND_NULL_HANDLER,
67545 		ZEND_NULL_HANDLER,
67546 		ZEND_GET_CLASS_SPEC_CONST_UNUSED_HANDLER,
67547 		ZEND_NULL_HANDLER,
67548 		ZEND_NULL_HANDLER,
67549 		ZEND_NULL_HANDLER,
67550 		ZEND_NULL_HANDLER,
67551 		ZEND_GET_CLASS_SPEC_TMP_UNUSED_HANDLER,
67552 		ZEND_NULL_HANDLER,
67553 		ZEND_NULL_HANDLER,
67554 		ZEND_NULL_HANDLER,
67555 		ZEND_NULL_HANDLER,
67556 		ZEND_GET_CLASS_SPEC_VAR_UNUSED_HANDLER,
67557 		ZEND_NULL_HANDLER,
67558 		ZEND_NULL_HANDLER,
67559 		ZEND_NULL_HANDLER,
67560 		ZEND_NULL_HANDLER,
67561 		ZEND_GET_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
67562 		ZEND_NULL_HANDLER,
67563 		ZEND_NULL_HANDLER,
67564 		ZEND_NULL_HANDLER,
67565 		ZEND_NULL_HANDLER,
67566 		ZEND_GET_CLASS_SPEC_CV_UNUSED_HANDLER,
67567 		ZEND_NULL_HANDLER,
67568 		ZEND_NULL_HANDLER,
67569 		ZEND_NULL_HANDLER,
67570 		ZEND_NULL_HANDLER,
67571 		ZEND_NULL_HANDLER,
67572 		ZEND_NULL_HANDLER,
67573 		ZEND_NULL_HANDLER,
67574 		ZEND_NULL_HANDLER,
67575 		ZEND_NULL_HANDLER,
67576 		ZEND_NULL_HANDLER,
67577 		ZEND_NULL_HANDLER,
67578 		ZEND_NULL_HANDLER,
67579 		ZEND_NULL_HANDLER,
67580 		ZEND_NULL_HANDLER,
67581 		ZEND_NULL_HANDLER,
67582 		ZEND_NULL_HANDLER,
67583 		ZEND_NULL_HANDLER,
67584 		ZEND_NULL_HANDLER,
67585 		ZEND_NULL_HANDLER,
67586 		ZEND_GET_CALLED_CLASS_SPEC_UNUSED_UNUSED_HANDLER,
67587 		ZEND_NULL_HANDLER,
67588 		ZEND_NULL_HANDLER,
67589 		ZEND_NULL_HANDLER,
67590 		ZEND_NULL_HANDLER,
67591 		ZEND_NULL_HANDLER,
67592 		ZEND_NULL_HANDLER,
67593 		ZEND_NULL_HANDLER,
67594 		ZEND_NULL_HANDLER,
67595 		ZEND_NULL_HANDLER,
67596 		ZEND_GET_TYPE_SPEC_CONST_UNUSED_HANDLER,
67597 		ZEND_NULL_HANDLER,
67598 		ZEND_NULL_HANDLER,
67599 		ZEND_NULL_HANDLER,
67600 		ZEND_NULL_HANDLER,
67601 		ZEND_GET_TYPE_SPEC_TMP_UNUSED_HANDLER,
67602 		ZEND_NULL_HANDLER,
67603 		ZEND_NULL_HANDLER,
67604 		ZEND_NULL_HANDLER,
67605 		ZEND_NULL_HANDLER,
67606 		ZEND_GET_TYPE_SPEC_VAR_UNUSED_HANDLER,
67607 		ZEND_NULL_HANDLER,
67608 		ZEND_NULL_HANDLER,
67609 		ZEND_NULL_HANDLER,
67610 		ZEND_NULL_HANDLER,
67611 		ZEND_NULL_HANDLER,
67612 		ZEND_NULL_HANDLER,
67613 		ZEND_NULL_HANDLER,
67614 		ZEND_NULL_HANDLER,
67615 		ZEND_NULL_HANDLER,
67616 		ZEND_GET_TYPE_SPEC_CV_UNUSED_HANDLER,
67617 		ZEND_NULL_HANDLER,
67618 		ZEND_NULL_HANDLER,
67619 		ZEND_NULL_HANDLER,
67620 		ZEND_NULL_HANDLER,
67621 		ZEND_NULL_HANDLER,
67622 		ZEND_NULL_HANDLER,
67623 		ZEND_NULL_HANDLER,
67624 		ZEND_NULL_HANDLER,
67625 		ZEND_NULL_HANDLER,
67626 		ZEND_NULL_HANDLER,
67627 		ZEND_NULL_HANDLER,
67628 		ZEND_NULL_HANDLER,
67629 		ZEND_NULL_HANDLER,
67630 		ZEND_NULL_HANDLER,
67631 		ZEND_NULL_HANDLER,
67632 		ZEND_NULL_HANDLER,
67633 		ZEND_NULL_HANDLER,
67634 		ZEND_NULL_HANDLER,
67635 		ZEND_NULL_HANDLER,
67636 		ZEND_FUNC_NUM_ARGS_SPEC_UNUSED_UNUSED_HANDLER,
67637 		ZEND_NULL_HANDLER,
67638 		ZEND_NULL_HANDLER,
67639 		ZEND_NULL_HANDLER,
67640 		ZEND_NULL_HANDLER,
67641 		ZEND_NULL_HANDLER,
67642 		ZEND_NULL_HANDLER,
67643 		ZEND_NULL_HANDLER,
67644 		ZEND_NULL_HANDLER,
67645 		ZEND_NULL_HANDLER,
67646 		ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSED_HANDLER,
67647 		ZEND_NULL_HANDLER,
67648 		ZEND_NULL_HANDLER,
67649 		ZEND_NULL_HANDLER,
67650 		ZEND_NULL_HANDLER,
67651 		ZEND_NULL_HANDLER,
67652 		ZEND_NULL_HANDLER,
67653 		ZEND_NULL_HANDLER,
67654 		ZEND_NULL_HANDLER,
67655 		ZEND_NULL_HANDLER,
67656 		ZEND_NULL_HANDLER,
67657 		ZEND_NULL_HANDLER,
67658 		ZEND_NULL_HANDLER,
67659 		ZEND_NULL_HANDLER,
67660 		ZEND_NULL_HANDLER,
67661 		ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUSED_HANDLER,
67662 		ZEND_NULL_HANDLER,
67663 		ZEND_NULL_HANDLER,
67664 		ZEND_NULL_HANDLER,
67665 		ZEND_NULL_HANDLER,
67666 		ZEND_NULL_HANDLER,
67667 		ZEND_NULL_HANDLER,
67668 		ZEND_NULL_HANDLER,
67669 		ZEND_NULL_HANDLER,
67670 		ZEND_NULL_HANDLER,
67671 		ZEND_NULL_HANDLER,
67672 		ZEND_NULL_HANDLER,
67673 		ZEND_NULL_HANDLER,
67674 		ZEND_NULL_HANDLER,
67675 		ZEND_NULL_HANDLER,
67676 		ZEND_NULL_HANDLER,
67677 		ZEND_NULL_HANDLER,
67678 		ZEND_NULL_HANDLER,
67679 		ZEND_NULL_HANDLER,
67680 		ZEND_NULL_HANDLER,
67681 		ZEND_NULL_HANDLER,
67682 		ZEND_NULL_HANDLER,
67683 		ZEND_NULL_HANDLER,
67684 		ZEND_NULL_HANDLER,
67685 		ZEND_NULL_HANDLER,
67686 		ZEND_NULL_HANDLER,
67687 		ZEND_NULL_HANDLER,
67688 		ZEND_NULL_HANDLER,
67689 		ZEND_NULL_HANDLER,
67690 		ZEND_NULL_HANDLER,
67691 		ZEND_UNSET_CV_SPEC_CV_UNUSED_HANDLER,
67692 		ZEND_NULL_HANDLER,
67693 		ZEND_NULL_HANDLER,
67694 		ZEND_NULL_HANDLER,
67695 		ZEND_NULL_HANDLER,
67696 		ZEND_NULL_HANDLER,
67697 		ZEND_NULL_HANDLER,
67698 		ZEND_NULL_HANDLER,
67699 		ZEND_NULL_HANDLER,
67700 		ZEND_NULL_HANDLER,
67701 		ZEND_NULL_HANDLER,
67702 		ZEND_NULL_HANDLER,
67703 		ZEND_NULL_HANDLER,
67704 		ZEND_NULL_HANDLER,
67705 		ZEND_NULL_HANDLER,
67706 		ZEND_NULL_HANDLER,
67707 		ZEND_NULL_HANDLER,
67708 		ZEND_NULL_HANDLER,
67709 		ZEND_NULL_HANDLER,
67710 		ZEND_NULL_HANDLER,
67711 		ZEND_NULL_HANDLER,
67712 		ZEND_NULL_HANDLER,
67713 		ZEND_NULL_HANDLER,
67714 		ZEND_NULL_HANDLER,
67715 		ZEND_NULL_HANDLER,
67716 		ZEND_ISSET_ISEMPTY_CV_SPEC_CV_UNUSED_HANDLER,
67717 		ZEND_NULL_HANDLER,
67718 		ZEND_NULL_HANDLER,
67719 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67720 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67721 		ZEND_NULL_HANDLER,
67722 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67723 		ZEND_NULL_HANDLER,
67724 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67725 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67726 		ZEND_NULL_HANDLER,
67727 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67728 		ZEND_NULL_HANDLER,
67729 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67730 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67731 		ZEND_NULL_HANDLER,
67732 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67733 		ZEND_NULL_HANDLER,
67734 		ZEND_NULL_HANDLER,
67735 		ZEND_NULL_HANDLER,
67736 		ZEND_NULL_HANDLER,
67737 		ZEND_NULL_HANDLER,
67738 		ZEND_NULL_HANDLER,
67739 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67740 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67741 		ZEND_NULL_HANDLER,
67742 		ZEND_ADD_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67743 		ZEND_NULL_HANDLER,
67744 		ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67745 		ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67746 		ZEND_NULL_HANDLER,
67747 		ZEND_ADD_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67748 		ZEND_NULL_HANDLER,
67749 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67750 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67751 		ZEND_NULL_HANDLER,
67752 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67753 		ZEND_NULL_HANDLER,
67754 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67755 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67756 		ZEND_NULL_HANDLER,
67757 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67758 		ZEND_NULL_HANDLER,
67759 		ZEND_NULL_HANDLER,
67760 		ZEND_NULL_HANDLER,
67761 		ZEND_NULL_HANDLER,
67762 		ZEND_NULL_HANDLER,
67763 		ZEND_NULL_HANDLER,
67764 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67765 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67766 		ZEND_NULL_HANDLER,
67767 		ZEND_ADD_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67768 		ZEND_NULL_HANDLER,
67769 		ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67770 		ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67771 		ZEND_NULL_HANDLER,
67772 		ZEND_ADD_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67773 		ZEND_NULL_HANDLER,
67774 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67775 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67776 		ZEND_NULL_HANDLER,
67777 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67778 		ZEND_NULL_HANDLER,
67779 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67780 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67781 		ZEND_NULL_HANDLER,
67782 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67783 		ZEND_NULL_HANDLER,
67784 		ZEND_NULL_HANDLER,
67785 		ZEND_NULL_HANDLER,
67786 		ZEND_NULL_HANDLER,
67787 		ZEND_NULL_HANDLER,
67788 		ZEND_NULL_HANDLER,
67789 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67790 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67791 		ZEND_NULL_HANDLER,
67792 		ZEND_ADD_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67793 		ZEND_NULL_HANDLER,
67794 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67795 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67796 		ZEND_NULL_HANDLER,
67797 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67798 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
67799 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67800 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67801 		ZEND_NULL_HANDLER,
67802 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67803 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
67804 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67805 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67806 		ZEND_NULL_HANDLER,
67807 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67808 		ZEND_NULL_HANDLER,
67809 		ZEND_NULL_HANDLER,
67810 		ZEND_NULL_HANDLER,
67811 		ZEND_NULL_HANDLER,
67812 		ZEND_NULL_HANDLER,
67813 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_CONST_HANDLER,
67814 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67815 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67816 		ZEND_NULL_HANDLER,
67817 		ZEND_SUB_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67818 		ZEND_NULL_HANDLER,
67819 		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67820 		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67821 		ZEND_NULL_HANDLER,
67822 		ZEND_SUB_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67823 		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
67824 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67825 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67826 		ZEND_NULL_HANDLER,
67827 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67828 		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
67829 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67830 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67831 		ZEND_NULL_HANDLER,
67832 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67833 		ZEND_NULL_HANDLER,
67834 		ZEND_NULL_HANDLER,
67835 		ZEND_NULL_HANDLER,
67836 		ZEND_NULL_HANDLER,
67837 		ZEND_NULL_HANDLER,
67838 		ZEND_SUB_LONG_SPEC_TMPVARCV_CONST_HANDLER,
67839 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67840 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67841 		ZEND_NULL_HANDLER,
67842 		ZEND_SUB_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67843 		ZEND_NULL_HANDLER,
67844 		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67845 		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67846 		ZEND_NULL_HANDLER,
67847 		ZEND_SUB_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67848 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
67849 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67850 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67851 		ZEND_NULL_HANDLER,
67852 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67853 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
67854 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67855 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67856 		ZEND_NULL_HANDLER,
67857 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67858 		ZEND_NULL_HANDLER,
67859 		ZEND_NULL_HANDLER,
67860 		ZEND_NULL_HANDLER,
67861 		ZEND_NULL_HANDLER,
67862 		ZEND_NULL_HANDLER,
67863 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
67864 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67865 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67866 		ZEND_NULL_HANDLER,
67867 		ZEND_SUB_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67868 		ZEND_NULL_HANDLER,
67869 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67870 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67871 		ZEND_NULL_HANDLER,
67872 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_CONST_TMPVARCV_HANDLER,
67873 		ZEND_NULL_HANDLER,
67874 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67875 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67876 		ZEND_NULL_HANDLER,
67877 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67878 		ZEND_NULL_HANDLER,
67879 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67880 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67881 		ZEND_NULL_HANDLER,
67882 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67883 		ZEND_NULL_HANDLER,
67884 		ZEND_NULL_HANDLER,
67885 		ZEND_NULL_HANDLER,
67886 		ZEND_NULL_HANDLER,
67887 		ZEND_NULL_HANDLER,
67888 		ZEND_NULL_HANDLER,
67889 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67890 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67891 		ZEND_NULL_HANDLER,
67892 		ZEND_MUL_LONG_NO_OVERFLOW_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67893 		ZEND_NULL_HANDLER,
67894 		ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67895 		ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67896 		ZEND_NULL_HANDLER,
67897 		ZEND_MUL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67898 		ZEND_NULL_HANDLER,
67899 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67900 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67901 		ZEND_NULL_HANDLER,
67902 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67903 		ZEND_NULL_HANDLER,
67904 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67905 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67906 		ZEND_NULL_HANDLER,
67907 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67908 		ZEND_NULL_HANDLER,
67909 		ZEND_NULL_HANDLER,
67910 		ZEND_NULL_HANDLER,
67911 		ZEND_NULL_HANDLER,
67912 		ZEND_NULL_HANDLER,
67913 		ZEND_NULL_HANDLER,
67914 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67915 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67916 		ZEND_NULL_HANDLER,
67917 		ZEND_MUL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67918 		ZEND_NULL_HANDLER,
67919 		ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67920 		ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67921 		ZEND_NULL_HANDLER,
67922 		ZEND_MUL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
67923 		ZEND_NULL_HANDLER,
67924 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67925 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67926 		ZEND_NULL_HANDLER,
67927 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67928 		ZEND_NULL_HANDLER,
67929 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67930 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67931 		ZEND_NULL_HANDLER,
67932 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67933 		ZEND_NULL_HANDLER,
67934 		ZEND_NULL_HANDLER,
67935 		ZEND_NULL_HANDLER,
67936 		ZEND_NULL_HANDLER,
67937 		ZEND_NULL_HANDLER,
67938 		ZEND_NULL_HANDLER,
67939 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67940 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67941 		ZEND_NULL_HANDLER,
67942 		ZEND_MUL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67943 		ZEND_NULL_HANDLER,
67944 		ZEND_NULL_HANDLER,
67945 		ZEND_NULL_HANDLER,
67946 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67947 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
67948 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
67949 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67950 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
67951 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
67952 		ZEND_NULL_HANDLER,
67953 		ZEND_NULL_HANDLER,
67954 		ZEND_NULL_HANDLER,
67955 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
67956 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
67957 		ZEND_IS_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
67958 		ZEND_NULL_HANDLER,
67959 		ZEND_NULL_HANDLER,
67960 		ZEND_NULL_HANDLER,
67961 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67962 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
67963 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
67964 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67965 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
67966 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
67967 		ZEND_NULL_HANDLER,
67968 		ZEND_NULL_HANDLER,
67969 		ZEND_NULL_HANDLER,
67970 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67971 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
67972 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
67973 		ZEND_NULL_HANDLER,
67974 		ZEND_NULL_HANDLER,
67975 		ZEND_NULL_HANDLER,
67976 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67977 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
67978 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
67979 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67980 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
67981 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
67982 		ZEND_NULL_HANDLER,
67983 		ZEND_NULL_HANDLER,
67984 		ZEND_NULL_HANDLER,
67985 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
67986 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
67987 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
67988 		ZEND_NULL_HANDLER,
67989 		ZEND_NULL_HANDLER,
67990 		ZEND_NULL_HANDLER,
67991 		ZEND_NULL_HANDLER,
67992 		ZEND_NULL_HANDLER,
67993 		ZEND_NULL_HANDLER,
67994 		ZEND_NULL_HANDLER,
67995 		ZEND_NULL_HANDLER,
67996 		ZEND_NULL_HANDLER,
67997 		ZEND_NULL_HANDLER,
67998 		ZEND_NULL_HANDLER,
67999 		ZEND_NULL_HANDLER,
68000 		ZEND_NULL_HANDLER,
68001 		ZEND_NULL_HANDLER,
68002 		ZEND_NULL_HANDLER,
68003 		ZEND_NULL_HANDLER,
68004 		ZEND_NULL_HANDLER,
68005 		ZEND_NULL_HANDLER,
68006 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68007 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68008 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68009 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68010 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68011 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68012 		ZEND_NULL_HANDLER,
68013 		ZEND_NULL_HANDLER,
68014 		ZEND_NULL_HANDLER,
68015 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68016 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68017 		ZEND_IS_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68018 		ZEND_NULL_HANDLER,
68019 		ZEND_NULL_HANDLER,
68020 		ZEND_NULL_HANDLER,
68021 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68022 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68023 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68024 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68025 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68026 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68027 		ZEND_NULL_HANDLER,
68028 		ZEND_NULL_HANDLER,
68029 		ZEND_NULL_HANDLER,
68030 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68031 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68032 		ZEND_IS_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68033 		ZEND_NULL_HANDLER,
68034 		ZEND_NULL_HANDLER,
68035 		ZEND_NULL_HANDLER,
68036 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68037 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68038 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68039 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68040 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68041 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68042 		ZEND_NULL_HANDLER,
68043 		ZEND_NULL_HANDLER,
68044 		ZEND_NULL_HANDLER,
68045 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68046 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68047 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68048 		ZEND_NULL_HANDLER,
68049 		ZEND_NULL_HANDLER,
68050 		ZEND_NULL_HANDLER,
68051 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68052 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68053 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68054 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68055 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68056 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68057 		ZEND_NULL_HANDLER,
68058 		ZEND_NULL_HANDLER,
68059 		ZEND_NULL_HANDLER,
68060 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68061 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68062 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68063 		ZEND_NULL_HANDLER,
68064 		ZEND_NULL_HANDLER,
68065 		ZEND_NULL_HANDLER,
68066 		ZEND_NULL_HANDLER,
68067 		ZEND_NULL_HANDLER,
68068 		ZEND_NULL_HANDLER,
68069 		ZEND_NULL_HANDLER,
68070 		ZEND_NULL_HANDLER,
68071 		ZEND_NULL_HANDLER,
68072 		ZEND_NULL_HANDLER,
68073 		ZEND_NULL_HANDLER,
68074 		ZEND_NULL_HANDLER,
68075 		ZEND_NULL_HANDLER,
68076 		ZEND_NULL_HANDLER,
68077 		ZEND_NULL_HANDLER,
68078 		ZEND_NULL_HANDLER,
68079 		ZEND_NULL_HANDLER,
68080 		ZEND_NULL_HANDLER,
68081 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68082 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68083 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68084 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68085 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68086 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68087 		ZEND_NULL_HANDLER,
68088 		ZEND_NULL_HANDLER,
68089 		ZEND_NULL_HANDLER,
68090 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68091 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68092 		ZEND_IS_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68093 		ZEND_NULL_HANDLER,
68094 		ZEND_NULL_HANDLER,
68095 		ZEND_NULL_HANDLER,
68096 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68097 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68098 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68099 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68100 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68101 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68102 		ZEND_NULL_HANDLER,
68103 		ZEND_NULL_HANDLER,
68104 		ZEND_NULL_HANDLER,
68105 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68106 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68107 		ZEND_IS_NOT_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68108 		ZEND_NULL_HANDLER,
68109 		ZEND_NULL_HANDLER,
68110 		ZEND_NULL_HANDLER,
68111 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68112 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68113 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68114 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68115 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68116 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68117 		ZEND_NULL_HANDLER,
68118 		ZEND_NULL_HANDLER,
68119 		ZEND_NULL_HANDLER,
68120 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68121 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68122 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68123 		ZEND_NULL_HANDLER,
68124 		ZEND_NULL_HANDLER,
68125 		ZEND_NULL_HANDLER,
68126 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68127 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68128 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68129 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68130 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68131 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68132 		ZEND_NULL_HANDLER,
68133 		ZEND_NULL_HANDLER,
68134 		ZEND_NULL_HANDLER,
68135 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68136 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68137 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68138 		ZEND_NULL_HANDLER,
68139 		ZEND_NULL_HANDLER,
68140 		ZEND_NULL_HANDLER,
68141 		ZEND_NULL_HANDLER,
68142 		ZEND_NULL_HANDLER,
68143 		ZEND_NULL_HANDLER,
68144 		ZEND_NULL_HANDLER,
68145 		ZEND_NULL_HANDLER,
68146 		ZEND_NULL_HANDLER,
68147 		ZEND_NULL_HANDLER,
68148 		ZEND_NULL_HANDLER,
68149 		ZEND_NULL_HANDLER,
68150 		ZEND_NULL_HANDLER,
68151 		ZEND_NULL_HANDLER,
68152 		ZEND_NULL_HANDLER,
68153 		ZEND_NULL_HANDLER,
68154 		ZEND_NULL_HANDLER,
68155 		ZEND_NULL_HANDLER,
68156 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68157 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68158 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68159 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68160 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68161 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68162 		ZEND_NULL_HANDLER,
68163 		ZEND_NULL_HANDLER,
68164 		ZEND_NULL_HANDLER,
68165 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68166 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68167 		ZEND_IS_NOT_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68168 		ZEND_NULL_HANDLER,
68169 		ZEND_NULL_HANDLER,
68170 		ZEND_NULL_HANDLER,
68171 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68172 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68173 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68174 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68175 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68176 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68177 		ZEND_NULL_HANDLER,
68178 		ZEND_NULL_HANDLER,
68179 		ZEND_NULL_HANDLER,
68180 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68181 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68182 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68183 		ZEND_NULL_HANDLER,
68184 		ZEND_NULL_HANDLER,
68185 		ZEND_NULL_HANDLER,
68186 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68187 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68188 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68189 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68190 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68191 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68192 		ZEND_NULL_HANDLER,
68193 		ZEND_NULL_HANDLER,
68194 		ZEND_NULL_HANDLER,
68195 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68196 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68197 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68198 		ZEND_NULL_HANDLER,
68199 		ZEND_NULL_HANDLER,
68200 		ZEND_NULL_HANDLER,
68201 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68202 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68203 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68204 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68205 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68206 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68207 		ZEND_NULL_HANDLER,
68208 		ZEND_NULL_HANDLER,
68209 		ZEND_NULL_HANDLER,
68210 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68211 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68212 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68213 		ZEND_NULL_HANDLER,
68214 		ZEND_NULL_HANDLER,
68215 		ZEND_NULL_HANDLER,
68216 		ZEND_NULL_HANDLER,
68217 		ZEND_NULL_HANDLER,
68218 		ZEND_NULL_HANDLER,
68219 		ZEND_NULL_HANDLER,
68220 		ZEND_NULL_HANDLER,
68221 		ZEND_NULL_HANDLER,
68222 		ZEND_NULL_HANDLER,
68223 		ZEND_NULL_HANDLER,
68224 		ZEND_NULL_HANDLER,
68225 		ZEND_NULL_HANDLER,
68226 		ZEND_NULL_HANDLER,
68227 		ZEND_NULL_HANDLER,
68228 		ZEND_NULL_HANDLER,
68229 		ZEND_NULL_HANDLER,
68230 		ZEND_NULL_HANDLER,
68231 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68232 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68233 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68234 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68235 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68236 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68237 		ZEND_NULL_HANDLER,
68238 		ZEND_NULL_HANDLER,
68239 		ZEND_NULL_HANDLER,
68240 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68241 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68242 		ZEND_IS_NOT_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68243 		ZEND_NULL_HANDLER,
68244 		ZEND_NULL_HANDLER,
68245 		ZEND_NULL_HANDLER,
68246 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68247 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68248 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68249 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68250 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68251 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68252 		ZEND_NULL_HANDLER,
68253 		ZEND_NULL_HANDLER,
68254 		ZEND_NULL_HANDLER,
68255 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68256 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68257 		ZEND_IS_SMALLER_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68258 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
68259 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68260 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68261 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68262 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68263 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68264 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68265 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68266 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68267 		ZEND_NULL_HANDLER,
68268 		ZEND_NULL_HANDLER,
68269 		ZEND_NULL_HANDLER,
68270 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68271 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68272 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68273 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
68274 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68275 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68276 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68277 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68278 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68279 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68280 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68281 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68282 		ZEND_NULL_HANDLER,
68283 		ZEND_NULL_HANDLER,
68284 		ZEND_NULL_HANDLER,
68285 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68286 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68287 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68288 		ZEND_NULL_HANDLER,
68289 		ZEND_NULL_HANDLER,
68290 		ZEND_NULL_HANDLER,
68291 		ZEND_NULL_HANDLER,
68292 		ZEND_NULL_HANDLER,
68293 		ZEND_NULL_HANDLER,
68294 		ZEND_NULL_HANDLER,
68295 		ZEND_NULL_HANDLER,
68296 		ZEND_NULL_HANDLER,
68297 		ZEND_NULL_HANDLER,
68298 		ZEND_NULL_HANDLER,
68299 		ZEND_NULL_HANDLER,
68300 		ZEND_NULL_HANDLER,
68301 		ZEND_NULL_HANDLER,
68302 		ZEND_NULL_HANDLER,
68303 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_HANDLER,
68304 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68305 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68306 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68307 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68308 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68309 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68310 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68311 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68312 		ZEND_NULL_HANDLER,
68313 		ZEND_NULL_HANDLER,
68314 		ZEND_NULL_HANDLER,
68315 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68316 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68317 		ZEND_IS_SMALLER_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68318 		ZEND_NULL_HANDLER,
68319 		ZEND_NULL_HANDLER,
68320 		ZEND_NULL_HANDLER,
68321 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68322 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68323 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68324 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68325 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68326 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68327 		ZEND_NULL_HANDLER,
68328 		ZEND_NULL_HANDLER,
68329 		ZEND_NULL_HANDLER,
68330 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68331 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68332 		ZEND_IS_SMALLER_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68333 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
68334 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68335 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68336 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68337 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68338 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68339 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68340 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68341 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68342 		ZEND_NULL_HANDLER,
68343 		ZEND_NULL_HANDLER,
68344 		ZEND_NULL_HANDLER,
68345 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68346 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68347 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68348 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
68349 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68350 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68351 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68352 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68353 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68354 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68355 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68356 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68357 		ZEND_NULL_HANDLER,
68358 		ZEND_NULL_HANDLER,
68359 		ZEND_NULL_HANDLER,
68360 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68361 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68362 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68363 		ZEND_NULL_HANDLER,
68364 		ZEND_NULL_HANDLER,
68365 		ZEND_NULL_HANDLER,
68366 		ZEND_NULL_HANDLER,
68367 		ZEND_NULL_HANDLER,
68368 		ZEND_NULL_HANDLER,
68369 		ZEND_NULL_HANDLER,
68370 		ZEND_NULL_HANDLER,
68371 		ZEND_NULL_HANDLER,
68372 		ZEND_NULL_HANDLER,
68373 		ZEND_NULL_HANDLER,
68374 		ZEND_NULL_HANDLER,
68375 		ZEND_NULL_HANDLER,
68376 		ZEND_NULL_HANDLER,
68377 		ZEND_NULL_HANDLER,
68378 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
68379 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68380 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68381 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68382 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68383 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68384 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68385 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68386 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68387 		ZEND_NULL_HANDLER,
68388 		ZEND_NULL_HANDLER,
68389 		ZEND_NULL_HANDLER,
68390 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68391 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68392 		ZEND_IS_SMALLER_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68393 		ZEND_NULL_HANDLER,
68394 		ZEND_NULL_HANDLER,
68395 		ZEND_NULL_HANDLER,
68396 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68397 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68398 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68399 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68400 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68401 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68402 		ZEND_NULL_HANDLER,
68403 		ZEND_NULL_HANDLER,
68404 		ZEND_NULL_HANDLER,
68405 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_HANDLER,
68406 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68407 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68408 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
68409 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68410 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68411 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68412 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68413 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68414 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68415 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68416 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68417 		ZEND_NULL_HANDLER,
68418 		ZEND_NULL_HANDLER,
68419 		ZEND_NULL_HANDLER,
68420 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68421 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68422 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68423 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
68424 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68425 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68426 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68427 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68428 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68429 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68430 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68431 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68432 		ZEND_NULL_HANDLER,
68433 		ZEND_NULL_HANDLER,
68434 		ZEND_NULL_HANDLER,
68435 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68436 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68437 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68438 		ZEND_NULL_HANDLER,
68439 		ZEND_NULL_HANDLER,
68440 		ZEND_NULL_HANDLER,
68441 		ZEND_NULL_HANDLER,
68442 		ZEND_NULL_HANDLER,
68443 		ZEND_NULL_HANDLER,
68444 		ZEND_NULL_HANDLER,
68445 		ZEND_NULL_HANDLER,
68446 		ZEND_NULL_HANDLER,
68447 		ZEND_NULL_HANDLER,
68448 		ZEND_NULL_HANDLER,
68449 		ZEND_NULL_HANDLER,
68450 		ZEND_NULL_HANDLER,
68451 		ZEND_NULL_HANDLER,
68452 		ZEND_NULL_HANDLER,
68453 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_HANDLER,
68454 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68455 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68456 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68457 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68458 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68459 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68460 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68461 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68462 		ZEND_NULL_HANDLER,
68463 		ZEND_NULL_HANDLER,
68464 		ZEND_NULL_HANDLER,
68465 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68466 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68467 		ZEND_IS_SMALLER_OR_EQUAL_LONG_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68468 		ZEND_NULL_HANDLER,
68469 		ZEND_NULL_HANDLER,
68470 		ZEND_NULL_HANDLER,
68471 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68472 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68473 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68474 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68475 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68476 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68477 		ZEND_NULL_HANDLER,
68478 		ZEND_NULL_HANDLER,
68479 		ZEND_NULL_HANDLER,
68480 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_HANDLER,
68481 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPZ_HANDLER,
68482 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_CONST_TMPVARCV_JMPNZ_HANDLER,
68483 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
68484 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68485 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68486 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68487 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68488 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68489 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68490 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68491 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68492 		ZEND_NULL_HANDLER,
68493 		ZEND_NULL_HANDLER,
68494 		ZEND_NULL_HANDLER,
68495 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68496 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68497 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68498 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
68499 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68500 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68501 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68502 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68503 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68504 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68505 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68506 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68507 		ZEND_NULL_HANDLER,
68508 		ZEND_NULL_HANDLER,
68509 		ZEND_NULL_HANDLER,
68510 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68511 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68512 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68513 		ZEND_NULL_HANDLER,
68514 		ZEND_NULL_HANDLER,
68515 		ZEND_NULL_HANDLER,
68516 		ZEND_NULL_HANDLER,
68517 		ZEND_NULL_HANDLER,
68518 		ZEND_NULL_HANDLER,
68519 		ZEND_NULL_HANDLER,
68520 		ZEND_NULL_HANDLER,
68521 		ZEND_NULL_HANDLER,
68522 		ZEND_NULL_HANDLER,
68523 		ZEND_NULL_HANDLER,
68524 		ZEND_NULL_HANDLER,
68525 		ZEND_NULL_HANDLER,
68526 		ZEND_NULL_HANDLER,
68527 		ZEND_NULL_HANDLER,
68528 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_HANDLER,
68529 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPZ_HANDLER,
68530 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_CONST_JMPNZ_HANDLER,
68531 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68532 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68533 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68534 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68535 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68536 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68537 		ZEND_NULL_HANDLER,
68538 		ZEND_NULL_HANDLER,
68539 		ZEND_NULL_HANDLER,
68540 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_HANDLER,
68541 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPZ_HANDLER,
68542 		ZEND_IS_SMALLER_OR_EQUAL_DOUBLE_SPEC_TMPVARCV_TMPVARCV_JMPNZ_HANDLER,
68543 		ZEND_NULL_HANDLER,
68544 		ZEND_NULL_HANDLER,
68545 		ZEND_NULL_HANDLER,
68546 		ZEND_NULL_HANDLER,
68547 		ZEND_NULL_HANDLER,
68548 		ZEND_NULL_HANDLER,
68549 		ZEND_NULL_HANDLER,
68550 		ZEND_NULL_HANDLER,
68551 		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER,
68552 		ZEND_PRE_INC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER,
68553 		ZEND_NULL_HANDLER,
68554 		ZEND_NULL_HANDLER,
68555 		ZEND_NULL_HANDLER,
68556 		ZEND_NULL_HANDLER,
68557 		ZEND_NULL_HANDLER,
68558 		ZEND_NULL_HANDLER,
68559 		ZEND_NULL_HANDLER,
68560 		ZEND_NULL_HANDLER,
68561 		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER,
68562 		ZEND_PRE_INC_LONG_SPEC_CV_RETVAL_USED_HANDLER,
68563 		ZEND_NULL_HANDLER,
68564 		ZEND_NULL_HANDLER,
68565 		ZEND_NULL_HANDLER,
68566 		ZEND_NULL_HANDLER,
68567 		ZEND_NULL_HANDLER,
68568 		ZEND_NULL_HANDLER,
68569 		ZEND_NULL_HANDLER,
68570 		ZEND_NULL_HANDLER,
68571 		ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER,
68572 		ZEND_PRE_INC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER,
68573 		ZEND_NULL_HANDLER,
68574 		ZEND_NULL_HANDLER,
68575 		ZEND_NULL_HANDLER,
68576 		ZEND_NULL_HANDLER,
68577 		ZEND_NULL_HANDLER,
68578 		ZEND_NULL_HANDLER,
68579 		ZEND_NULL_HANDLER,
68580 		ZEND_NULL_HANDLER,
68581 		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_UNUSED_HANDLER,
68582 		ZEND_PRE_DEC_LONG_NO_OVERFLOW_SPEC_CV_RETVAL_USED_HANDLER,
68583 		ZEND_NULL_HANDLER,
68584 		ZEND_NULL_HANDLER,
68585 		ZEND_NULL_HANDLER,
68586 		ZEND_NULL_HANDLER,
68587 		ZEND_NULL_HANDLER,
68588 		ZEND_NULL_HANDLER,
68589 		ZEND_NULL_HANDLER,
68590 		ZEND_NULL_HANDLER,
68591 		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_UNUSED_HANDLER,
68592 		ZEND_PRE_DEC_LONG_SPEC_CV_RETVAL_USED_HANDLER,
68593 		ZEND_NULL_HANDLER,
68594 		ZEND_NULL_HANDLER,
68595 		ZEND_NULL_HANDLER,
68596 		ZEND_NULL_HANDLER,
68597 		ZEND_NULL_HANDLER,
68598 		ZEND_NULL_HANDLER,
68599 		ZEND_NULL_HANDLER,
68600 		ZEND_NULL_HANDLER,
68601 		ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_UNUSED_HANDLER,
68602 		ZEND_PRE_DEC_LONG_OR_DOUBLE_SPEC_CV_RETVAL_USED_HANDLER,
68603 		ZEND_NULL_HANDLER,
68604 		ZEND_NULL_HANDLER,
68605 		ZEND_NULL_HANDLER,
68606 		ZEND_NULL_HANDLER,
68607 		ZEND_POST_INC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER,
68608 		ZEND_NULL_HANDLER,
68609 		ZEND_NULL_HANDLER,
68610 		ZEND_NULL_HANDLER,
68611 		ZEND_NULL_HANDLER,
68612 		ZEND_POST_INC_LONG_SPEC_CV_HANDLER,
68613 		ZEND_NULL_HANDLER,
68614 		ZEND_NULL_HANDLER,
68615 		ZEND_NULL_HANDLER,
68616 		ZEND_NULL_HANDLER,
68617 		ZEND_POST_INC_LONG_OR_DOUBLE_SPEC_CV_HANDLER,
68618 		ZEND_NULL_HANDLER,
68619 		ZEND_NULL_HANDLER,
68620 		ZEND_NULL_HANDLER,
68621 		ZEND_NULL_HANDLER,
68622 		ZEND_POST_DEC_LONG_NO_OVERFLOW_SPEC_CV_HANDLER,
68623 		ZEND_NULL_HANDLER,
68624 		ZEND_NULL_HANDLER,
68625 		ZEND_NULL_HANDLER,
68626 		ZEND_NULL_HANDLER,
68627 		ZEND_POST_DEC_LONG_SPEC_CV_HANDLER,
68628 		ZEND_NULL_HANDLER,
68629 		ZEND_NULL_HANDLER,
68630 		ZEND_NULL_HANDLER,
68631 		ZEND_NULL_HANDLER,
68632 		ZEND_POST_DEC_LONG_OR_DOUBLE_SPEC_CV_HANDLER,
68633 		ZEND_QM_ASSIGN_DOUBLE_SPEC_CONST_HANDLER,
68634 		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
68635 		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
68636 		ZEND_NULL_HANDLER,
68637 		ZEND_QM_ASSIGN_DOUBLE_SPEC_TMPVARCV_HANDLER,
68638 		ZEND_QM_ASSIGN_NOREF_SPEC_CONST_HANDLER,
68639 		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
68640 		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
68641 		ZEND_NULL_HANDLER,
68642 		ZEND_QM_ASSIGN_NOREF_SPEC_TMPVARCV_HANDLER,
68643 		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CONST_HANDLER,
68644 		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVAR_HANDLER,
68645 		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_TMPVAR_HANDLER,
68646 		ZEND_NULL_HANDLER,
68647 		ZEND_FETCH_DIM_R_INDEX_SPEC_CONST_CV_HANDLER,
68648 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER,
68649 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_HANDLER,
68650 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_HANDLER,
68651 		ZEND_NULL_HANDLER,
68652 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CV_HANDLER,
68653 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CONST_HANDLER,
68654 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_HANDLER,
68655 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_TMPVAR_HANDLER,
68656 		ZEND_NULL_HANDLER,
68657 		ZEND_FETCH_DIM_R_INDEX_SPEC_TMPVAR_CV_HANDLER,
68658 		ZEND_NULL_HANDLER,
68659 		ZEND_NULL_HANDLER,
68660 		ZEND_NULL_HANDLER,
68661 		ZEND_NULL_HANDLER,
68662 		ZEND_NULL_HANDLER,
68663 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CONST_HANDLER,
68664 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVAR_HANDLER,
68665 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_TMPVAR_HANDLER,
68666 		ZEND_NULL_HANDLER,
68667 		ZEND_FETCH_DIM_R_INDEX_SPEC_CV_CV_HANDLER,
68668 		ZEND_NULL_HANDLER,
68669 		ZEND_NULL_HANDLER,
68670 		ZEND_SEND_VAR_SIMPLE_SPEC_VAR_HANDLER,
68671 		ZEND_NULL_HANDLER,
68672 		ZEND_SEND_VAR_SIMPLE_SPEC_CV_HANDLER,
68673 		ZEND_NULL_HANDLER,
68674 		ZEND_NULL_HANDLER,
68675 		ZEND_NULL_HANDLER,
68676 		ZEND_NULL_HANDLER,
68677 		ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_HANDLER,
68678 		ZEND_SEND_VAR_EX_SIMPLE_SPEC_VAR_QUICK_HANDLER,
68679 		ZEND_NULL_HANDLER,
68680 		ZEND_NULL_HANDLER,
68681 		ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_HANDLER,
68682 		ZEND_SEND_VAR_EX_SIMPLE_SPEC_CV_QUICK_HANDLER,
68683 		ZEND_NULL_HANDLER,
68684 		ZEND_NULL_HANDLER,
68685 		ZEND_NULL_HANDLER,
68686 		ZEND_NULL_HANDLER,
68687 		ZEND_NULL_HANDLER,
68688 		ZEND_NULL_HANDLER,
68689 		ZEND_NULL_HANDLER,
68690 		ZEND_NULL_HANDLER,
68691 		ZEND_NULL_HANDLER,
68692 		ZEND_NULL_HANDLER,
68693 		ZEND_NULL_HANDLER,
68694 		ZEND_NULL_HANDLER,
68695 		ZEND_NULL_HANDLER,
68696 		ZEND_NULL_HANDLER,
68697 		ZEND_NULL_HANDLER,
68698 		ZEND_NULL_HANDLER,
68699 		ZEND_NULL_HANDLER,
68700 		ZEND_NULL_HANDLER,
68701 		ZEND_NULL_HANDLER,
68702 		ZEND_NULL_HANDLER,
68703 		ZEND_NULL_HANDLER,
68704 		ZEND_NULL_HANDLER,
68705 		ZEND_NULL_HANDLER,
68706 		ZEND_NULL_HANDLER,
68707 		ZEND_NULL_HANDLER,
68708 		ZEND_NULL_HANDLER,
68709 		ZEND_NULL_HANDLER,
68710 		ZEND_NULL_HANDLER,
68711 		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_UNUSED_HANDLER,
68712 		ZEND_FE_FETCH_R_SIMPLE_SPEC_VAR_CV_RETVAL_USED_HANDLER,
68713 		ZEND_NULL_HANDLER,
68714 		ZEND_NULL_HANDLER,
68715 		ZEND_NULL_HANDLER,
68716 		ZEND_NULL_HANDLER,
68717 		ZEND_NULL_HANDLER,
68718 		ZEND_NULL_HANDLER,
68719 		ZEND_NULL_HANDLER,
68720 		ZEND_NULL_HANDLER,
68721 		ZEND_NULL_HANDLER,
68722 		ZEND_NULL_HANDLER,
68723 		ZEND_NULL_HANDLER,
68724 		ZEND_NULL_HANDLER,
68725 		ZEND_NULL_HANDLER,
68726 		ZEND_NULL_HANDLER,
68727 		ZEND_NULL_HANDLER,
68728 		ZEND_NULL_HANDLER,
68729 		ZEND_NULL_HANDLER,
68730 		ZEND_NULL_HANDLER,
68731 		ZEND_NULL_HANDLER,
68732 		ZEND_NULL_HANDLER,
68733 		ZEND_NULL_HANDLER
68734 	};
68735 	static const uint32_t specs[] = {
68736 		0,
68737 		1 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68738 		26 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68739 		51 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68740 		76 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68741 		101 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68742 		126 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68743 		151 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68744 		176 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68745 		201 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68746 		226 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68747 		251 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68748 		276 | SPEC_RULE_OP1,
68749 		281 | SPEC_RULE_OP1,
68750 		286 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68751 		311 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68752 		336 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68753 		361 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68754 		386 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68755 		411 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68756 		436 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68757 		461 | SPEC_RULE_OP1,
68758 		466 | SPEC_RULE_OP1,
68759 		471 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68760 		546 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68761 		621 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68762 		696 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68763 		771 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68764 		846 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68765 		921 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68766 		996 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68767 		1071 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68768 		1146 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68769 		1221 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68770 		1296 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
68771 		1306 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL,
68772 		1316 | SPEC_RULE_OP1,
68773 		1321 | SPEC_RULE_OP1,
68774 		1326 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL,
68775 		1376 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68776 		1401 | SPEC_RULE_OP1,
68777 		1406,
68778 		1407,
68779 		1408 | SPEC_RULE_OP1,
68780 		1413 | SPEC_RULE_OP1,
68781 		1418 | SPEC_RULE_OP1,
68782 		1423 | SPEC_RULE_OP1,
68783 		1428 | SPEC_RULE_OP1,
68784 		1433 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68785 		1458 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68786 		1483 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
68787 		1493 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68788 		1518 | SPEC_RULE_OP1,
68789 		1523 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68790 		1548 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68791 		1573 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68792 		1598 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68793 		1623,
68794 		1624 | SPEC_RULE_OP1,
68795 		1629 | SPEC_RULE_OP2,
68796 		1634 | SPEC_RULE_RETVAL,
68797 		1636 | SPEC_RULE_OP2,
68798 		1641 | SPEC_RULE_OP1,
68799 		1646,
68800 		1647 | SPEC_RULE_OP2,
68801 		1652 | SPEC_RULE_OP1,
68802 		1657 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
68803 		1667 | SPEC_RULE_OP1,
68804 		1672 | SPEC_RULE_OP1,
68805 		1677 | SPEC_RULE_OP2,
68806 		1682 | SPEC_RULE_OP1,
68807 		1687 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68808 		1712 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68809 		1737 | SPEC_RULE_OP1,
68810 		1742 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68811 		1767 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68812 		1792 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68813 		1817 | SPEC_RULE_OP1,
68814 		1822 | SPEC_RULE_OP1,
68815 		1827 | SPEC_RULE_OP1,
68816 		1832 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68817 		1857 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68818 		1882 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68819 		1907 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68820 		1932 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68821 		1957 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68822 		1982 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68823 		2007 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68824 		2032 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68825 		2057 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68826 		2082 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68827 		2107 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68828 		2132 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68829 		2157 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68830 		2182 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68831 		2207 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68832 		2232 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68833 		2257 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68834 		2282 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68835 		2307 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68836 		4921,
68837 		2332,
68838 		2333,
68839 		2334,
68840 		2335,
68841 		2336,
68842 		2337 | SPEC_RULE_OP1,
68843 		2342 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68844 		2367 | SPEC_RULE_OP1,
68845 		2372 | SPEC_RULE_OP2,
68846 		2377 | SPEC_RULE_OP1,
68847 		2382 | SPEC_RULE_OP1,
68848 		2387 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68849 		2412 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68850 		2437 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68851 		2462 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68852 		2487 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG,
68853 		2497 | SPEC_RULE_OP1,
68854 		2502 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68855 		2527,
68856 		2528 | SPEC_RULE_OP1,
68857 		2533 | SPEC_RULE_OP1,
68858 		2538 | SPEC_RULE_OP1,
68859 		2543 | SPEC_RULE_OP1,
68860 		2548 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68861 		2573 | SPEC_RULE_OP1,
68862 		2578 | SPEC_RULE_OP1,
68863 		2583 | SPEC_RULE_OP1,
68864 		2588 | SPEC_RULE_OP2,
68865 		2593 | SPEC_RULE_RETVAL,
68866 		2595 | SPEC_RULE_RETVAL,
68867 		2597 | SPEC_RULE_RETVAL,
68868 		2599 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68869 		2624 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68870 		2649 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68871 		2674 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68872 		2699 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
68873 		2824,
68874 		2825 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68875 		2850,
68876 		2851 | SPEC_RULE_OP2,
68877 		2856,
68878 		2857 | SPEC_RULE_OP1,
68879 		2862 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68880 		2887 | SPEC_RULE_OP2,
68881 		2892 | SPEC_RULE_OP2,
68882 		2897,
68883 		2898 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_OP_DATA,
68884 		3023 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68885 		3048,
68886 		3049,
68887 		3050,
68888 		3051 | SPEC_RULE_OP1,
68889 		3056 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68890 		3081,
68891 		3082,
68892 		3083 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68893 		3108,
68894 		3109,
68895 		3110,
68896 		3111 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68897 		3136 | SPEC_RULE_OP1,
68898 		3141,
68899 		3142,
68900 		3143,
68901 		3144,
68902 		3145 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68903 		3170 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_DIM_OBJ,
68904 		3245 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68905 		3270 | SPEC_RULE_OP1,
68906 		3275 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68907 		3300,
68908 		3301 | SPEC_RULE_OP2,
68909 		3306 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68910 		3331 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68911 		3356 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68912 		3381 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68913 		3406 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68914 		3431 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68915 		3456 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68916 		3481 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68917 		3506 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68918 		3531 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68919 		3556 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68920 		3581 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68921 		4921,
68922 		3606 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68923 		3631 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68924 		3656 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68925 		3681 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68926 		3706 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68927 		3731 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68928 		3756 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68929 		3781 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68930 		3806 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68931 		3831 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68932 		3856 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68933 		3881 | SPEC_RULE_OP1 | SPEC_RULE_OP2,
68934 		4921
68935 	};
68936 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
68937 	zend_opcode_handler_funcs = labels;
68938 	zend_spec_handlers = specs;
68939 	execute_ex(NULL);
68940 #else
68941 	zend_opcode_handlers = labels;
68942 	zend_handlers_count = sizeof(labels) / sizeof(void*);
68943 	zend_spec_handlers = specs;
68944 #endif
68945 }
68946 
68947 static HashTable *zend_handlers_table = NULL;
68948 
68949 static void init_opcode_serialiser(void)
68950 {
68951 	int i;
68952 	zval tmp;
68953 
68954 	zend_handlers_table = malloc(sizeof(HashTable));
68955 	zend_hash_init_ex(zend_handlers_table, zend_handlers_count, NULL, NULL, 1, 0);
68956 	zend_hash_real_init(zend_handlers_table, 0);
68957 	Z_TYPE_INFO(tmp) = IS_LONG;
68958 	for (i = 0; i < zend_handlers_count; i++) {
68959 		Z_LVAL(tmp) = i;
68960 		zend_hash_index_add(zend_handlers_table, (zend_long)(zend_uintptr_t)zend_opcode_handlers[i], &tmp);
68961 	}
68962 }
68963 
68964 ZEND_API void zend_serialize_opcode_handler(zend_op *op)
68965 {
68966 	zval *zv;
68967 
68968 	if (!zend_handlers_table) {
68969 		init_opcode_serialiser();
68970 	}
68971 	zv = zend_hash_index_find(zend_handlers_table, (zend_long)(zend_uintptr_t)op->handler);
68972 	ZEND_ASSERT(zv != NULL);
68973 	op->handler = (const void *)(zend_uintptr_t)Z_LVAL_P(zv);
68974 }
68975 
68976 ZEND_API void zend_deserialize_opcode_handler(zend_op *op)
68977 {
68978 	op->handler = zend_opcode_handlers[(zend_uintptr_t)op->handler];
68979 }
68980 
68981 ZEND_API const void *zend_get_opcode_handler_func(const zend_op *op)
68982 {
68983 #if ZEND_VM_KIND == ZEND_VM_KIND_CALL
68984 	return op->handler;
68985 #elif ZEND_VM_KIND == ZEND_VM_KIND_HYBRID
68986 	zval *zv;
68987 
68988 	if (!zend_handlers_table) {
68989 		init_opcode_serialiser();
68990 	}
68991 	zv = zend_hash_index_find(zend_handlers_table, (zend_long)(zend_uintptr_t)op->handler);
68992 	ZEND_ASSERT(zv != NULL);
68993 	return zend_opcode_handler_funcs[Z_LVAL_P(zv)];
68994 #else
68995 	return NULL;
68996 #endif
68997 }
68998 
68999 ZEND_API const zend_op *zend_get_halt_op(void)
69000 {
69001 #if ZEND_VM_KIND == ZEND_VM_KIND_HYBRID
69002 	return &hybrid_halt_op;
69003 #else
69004 	return NULL;
69005 #endif
69006 }
69007 
69008 ZEND_API int zend_vm_kind(void)
69009 {
69010 	return ZEND_VM_KIND;
69011 }
69012 
69013 static const void *zend_vm_get_opcode_handler_ex(uint32_t spec, const zend_op* op)
69014 {
69015 	static const int zend_vm_decode[] = {
69016 		_UNUSED_CODE, /* 0              */
69017 		_CONST_CODE,  /* 1 = IS_CONST   */
69018 		_TMP_CODE,    /* 2 = IS_TMP_VAR */
69019 		_UNUSED_CODE, /* 3              */
69020 		_VAR_CODE,    /* 4 = IS_VAR     */
69021 		_UNUSED_CODE, /* 5              */
69022 		_UNUSED_CODE, /* 6              */
69023 		_UNUSED_CODE, /* 7              */
69024 		_UNUSED_CODE, /* 8 = IS_UNUSED  */
69025 		_UNUSED_CODE, /* 9              */
69026 		_UNUSED_CODE, /* 10             */
69027 		_UNUSED_CODE, /* 11             */
69028 		_UNUSED_CODE, /* 12             */
69029 		_UNUSED_CODE, /* 13             */
69030 		_UNUSED_CODE, /* 14             */
69031 		_UNUSED_CODE, /* 15             */
69032 		_CV_CODE      /* 16 = IS_CV     */
69033 	};
69034 	uint32_t offset = 0;
69035 	if (spec & SPEC_RULE_OP1) offset = offset * 5 + zend_vm_decode[op->op1_type];
69036 	if (spec & SPEC_RULE_OP2) offset = offset * 5 + zend_vm_decode[op->op2_type];
69037 	if (spec & SPEC_RULE_OP_DATA) offset = offset * 5 + zend_vm_decode[(op + 1)->op1_type];
69038 	if (spec & SPEC_RULE_RETVAL) offset = offset * 2 + (op->result_type != IS_UNUSED);
69039 	if (spec & SPEC_RULE_QUICK_ARG) offset = offset * 2 + (op->op2.num < MAX_ARG_FLAG_NUM);
69040 	if (spec & SPEC_RULE_SMART_BRANCH) {
69041 		offset = offset * 3;
69042 		if ((op+1)->opcode == ZEND_JMPZ) {
69043 			offset += 1;
69044 		} else if ((op+1)->opcode == ZEND_JMPNZ) {
69045 			offset += 2;
69046 		}
69047 	}
69048 	if (spec & SPEC_RULE_DIM_OBJ) {
69049 		offset = offset * 3;
69050 		if (op->extended_value == ZEND_ASSIGN_DIM) {
69051 			offset += 1;
69052 		} else if (op->extended_value == ZEND_ASSIGN_OBJ) {
69053 			offset += 2;
69054 		}
69055 	}
69056 	return zend_opcode_handlers[(spec & SPEC_START_MASK) + offset];
69057 }
69058 
69059 static const void *zend_vm_get_opcode_handler(zend_uchar opcode, const zend_op* op)
69060 {
69061 	return zend_vm_get_opcode_handler_ex(zend_spec_handlers[opcode], op);
69062 }
69063 
69064 #if ZEND_VM_KIND == ZEND_VM_KIND_HYBRID
69065 static const void *zend_vm_get_opcode_handler_func(zend_uchar opcode, const zend_op* op)
69066 {
69067 	uint32_t spec = zend_spec_handlers[opcode];
69068 	static const int zend_vm_decode[] = {
69069 		_UNUSED_CODE, /* 0              */
69070 		_CONST_CODE,  /* 1 = IS_CONST   */
69071 		_TMP_CODE,    /* 2 = IS_TMP_VAR */
69072 		_UNUSED_CODE, /* 3              */
69073 		_VAR_CODE,    /* 4 = IS_VAR     */
69074 		_UNUSED_CODE, /* 5              */
69075 		_UNUSED_CODE, /* 6              */
69076 		_UNUSED_CODE, /* 7              */
69077 		_UNUSED_CODE, /* 8 = IS_UNUSED  */
69078 		_UNUSED_CODE, /* 9              */
69079 		_UNUSED_CODE, /* 10             */
69080 		_UNUSED_CODE, /* 11             */
69081 		_UNUSED_CODE, /* 12             */
69082 		_UNUSED_CODE, /* 13             */
69083 		_UNUSED_CODE, /* 14             */
69084 		_UNUSED_CODE, /* 15             */
69085 		_CV_CODE      /* 16 = IS_CV     */
69086 	};
69087 	uint32_t offset = 0;
69088 	if (spec & SPEC_RULE_OP1) offset = offset * 5 + zend_vm_decode[op->op1_type];
69089 	if (spec & SPEC_RULE_OP2) offset = offset * 5 + zend_vm_decode[op->op2_type];
69090 	if (spec & SPEC_RULE_OP_DATA) offset = offset * 5 + zend_vm_decode[(op + 1)->op1_type];
69091 	if (spec & SPEC_RULE_RETVAL) offset = offset * 2 + (op->result_type != IS_UNUSED);
69092 	if (spec & SPEC_RULE_QUICK_ARG) offset = offset * 2 + (op->op2.num < MAX_ARG_FLAG_NUM);
69093 	if (spec & SPEC_RULE_SMART_BRANCH) {
69094 		offset = offset * 3;
69095 		if ((op+1)->opcode == ZEND_JMPZ) {
69096 			offset += 1;
69097 		} else if ((op+1)->opcode == ZEND_JMPNZ) {
69098 			offset += 2;
69099 		}
69100 	}
69101 	if (spec & SPEC_RULE_DIM_OBJ) {
69102 		offset = offset * 3;
69103 		if (op->extended_value == ZEND_ASSIGN_DIM) {
69104 			offset += 1;
69105 		} else if (op->extended_value == ZEND_ASSIGN_OBJ) {
69106 			offset += 2;
69107 		}
69108 	}
69109 	return zend_opcode_handler_funcs[(spec & SPEC_START_MASK) + offset];
69110 }
69111 
69112 #endif
69113 
69114 ZEND_API void zend_vm_set_opcode_handler(zend_op* op)
69115 {
69116 	op->handler = zend_vm_get_opcode_handler(zend_user_opcodes[op->opcode], op);
69117 }
69118 
69119 ZEND_API void zend_vm_set_opcode_handler_ex(zend_op* op, uint32_t op1_info, uint32_t op2_info, uint32_t res_info)
69120 {
69121 	zend_uchar opcode = zend_user_opcodes[op->opcode];
69122 	uint32_t spec = zend_spec_handlers[opcode];
69123 	switch (opcode) {
69124 		case ZEND_ADD:
69125 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69126 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69127 					break;
69128 				}
69129 				spec = 3906 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69130 				if (op->op1_type > op->op2_type) {
69131 					zend_swap_operands(op);
69132 				}
69133 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69134 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69135 					break;
69136 				}
69137 				spec = 3931 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69138 				if (op->op1_type > op->op2_type) {
69139 					zend_swap_operands(op);
69140 				}
69141 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
69142 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69143 					break;
69144 				}
69145 				spec = 3956 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69146 				if (op->op1_type > op->op2_type) {
69147 					zend_swap_operands(op);
69148 				}
69149 			}
69150 			break;
69151 		case ZEND_SUB:
69152 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69153 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69154 					break;
69155 				}
69156 				spec = 3981 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69157 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69158 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69159 					break;
69160 				}
69161 				spec = 4006 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69162 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
69163 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69164 					break;
69165 				}
69166 				spec = 4031 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69167 			}
69168 			break;
69169 		case ZEND_MUL:
69170 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69171 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69172 					break;
69173 				}
69174 				spec = 4056 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69175 				if (op->op1_type > op->op2_type) {
69176 					zend_swap_operands(op);
69177 				}
69178 			} else if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69179 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69180 					break;
69181 				}
69182 				spec = 4081 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69183 				if (op->op1_type > op->op2_type) {
69184 					zend_swap_operands(op);
69185 				}
69186 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
69187 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69188 					break;
69189 				}
69190 				spec = 4106 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69191 				if (op->op1_type > op->op2_type) {
69192 					zend_swap_operands(op);
69193 				}
69194 			}
69195 			break;
69196 		case ZEND_IS_EQUAL:
69197 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69198 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69199 					break;
69200 				}
69201 				spec = 4131 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69202 				if (op->op1_type > op->op2_type) {
69203 					zend_swap_operands(op);
69204 				}
69205 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
69206 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69207 					break;
69208 				}
69209 				spec = 4206 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69210 				if (op->op1_type > op->op2_type) {
69211 					zend_swap_operands(op);
69212 				}
69213 			}
69214 			break;
69215 		case ZEND_IS_NOT_EQUAL:
69216 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69217 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69218 					break;
69219 				}
69220 				spec = 4281 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69221 				if (op->op1_type > op->op2_type) {
69222 					zend_swap_operands(op);
69223 				}
69224 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
69225 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69226 					break;
69227 				}
69228 				spec = 4356 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69229 				if (op->op1_type > op->op2_type) {
69230 					zend_swap_operands(op);
69231 				}
69232 			}
69233 			break;
69234 		case ZEND_IS_SMALLER:
69235 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69236 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69237 					break;
69238 				}
69239 				spec = 4431 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69240 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
69241 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69242 					break;
69243 				}
69244 				spec = 4506 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69245 			}
69246 			break;
69247 		case ZEND_IS_SMALLER_OR_EQUAL:
69248 			if (op1_info == MAY_BE_LONG && op2_info == MAY_BE_LONG) {
69249 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69250 					break;
69251 				}
69252 				spec = 4581 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69253 			} else if (op1_info == MAY_BE_DOUBLE && op2_info == MAY_BE_DOUBLE) {
69254 				if (op->op1_type == IS_CONST && op->op2_type == IS_CONST) {
69255 					break;
69256 				}
69257 				spec = 4656 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_SMART_BRANCH;
69258 			}
69259 			break;
69260 		case ZEND_QM_ASSIGN:
69261 			if (op1_info == MAY_BE_DOUBLE) {
69262 				spec = 4821 | SPEC_RULE_OP1;
69263 			} else if (!(op1_info & ((MAY_BE_ANY|MAY_BE_UNDEF)-(MAY_BE_NULL|MAY_BE_FALSE|MAY_BE_TRUE|MAY_BE_LONG|MAY_BE_DOUBLE)))) {
69264 				spec = 4826 | SPEC_RULE_OP1;
69265 			}
69266 			break;
69267 		case ZEND_PRE_INC:
69268 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
69269 				spec = 4731 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
69270 			} else if (op1_info == MAY_BE_LONG) {
69271 				spec = 4741 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
69272 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
69273 				spec = 4751 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
69274 			}
69275 			break;
69276 		case ZEND_PRE_DEC:
69277 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
69278 				spec = 4761 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
69279 			} else if (op1_info == MAY_BE_LONG) {
69280 				spec = 4771 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
69281 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
69282 				spec = 4781 | SPEC_RULE_OP1 | SPEC_RULE_RETVAL;
69283 			}
69284 			break;
69285 		case ZEND_POST_INC:
69286 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
69287 				spec = 4791 | SPEC_RULE_OP1;
69288 			} else if (op1_info == MAY_BE_LONG) {
69289 				spec = 4796 | SPEC_RULE_OP1;
69290 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
69291 				spec = 4801 | SPEC_RULE_OP1;
69292 			}
69293 			break;
69294 		case ZEND_POST_DEC:
69295 			if (res_info == MAY_BE_LONG && op1_info == MAY_BE_LONG) {
69296 				spec = 4806 | SPEC_RULE_OP1;
69297 			} else if (op1_info == MAY_BE_LONG) {
69298 				spec = 4811 | SPEC_RULE_OP1;
69299 			} else if (op1_info == (MAY_BE_LONG|MAY_BE_DOUBLE)) {
69300 				spec = 4816 | SPEC_RULE_OP1;
69301 			}
69302 			break;
69303 		case ZEND_SEND_VAR_EX:
69304 			if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
69305 				spec = 4861 | SPEC_RULE_OP1 | SPEC_RULE_QUICK_ARG;
69306 			}
69307 			break;
69308 		case ZEND_FE_FETCH_R:
69309 			if (op->op2_type == IS_CV && (op1_info & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF)) == MAY_BE_ARRAY) {
69310 				spec = 4871 | SPEC_RULE_OP1 | SPEC_RULE_OP2 | SPEC_RULE_RETVAL;
69311 			}
69312 			break;
69313 		case ZEND_FETCH_DIM_R:
69314 			if (!(op2_info & (MAY_BE_UNDEF|MAY_BE_NULL|MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_OBJECT|MAY_BE_RESOURCE|MAY_BE_REF))) {
69315 				spec = 4831 | SPEC_RULE_OP1 | SPEC_RULE_OP2;
69316 			}
69317 			break;
69318 		case ZEND_SEND_VAR:
69319 			if ((op1_info & (MAY_BE_UNDEF|MAY_BE_REF)) == 0) {
69320 				spec = 4856 | SPEC_RULE_OP1;
69321 			}
69322 			break;
69323 		default:
69324 			break;
69325 	}
69326 	op->handler = zend_vm_get_opcode_handler_ex(spec, op);
69327 }
69328 
69329 ZEND_API int zend_vm_call_opcode_handler(zend_execute_data* ex)
69330 {
69331 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
69332 	opcode_handler_t handler;
69333 #endif
69334 	int ret;
69335 #ifdef ZEND_VM_IP_GLOBAL_REG
69336 	const zend_op *orig_opline = opline;
69337 #endif
69338 #ifdef ZEND_VM_FP_GLOBAL_REG
69339 	zend_execute_data *orig_execute_data = execute_data;
69340 	execute_data = ex;
69341 #else
69342 	zend_execute_data *execute_data = ex;
69343 #endif
69344 
69345 	LOAD_OPLINE();
69346 #if defined(ZEND_VM_FP_GLOBAL_REG) && defined(ZEND_VM_IP_GLOBAL_REG)
69347 #if (ZEND_VM_KIND == ZEND_VM_KIND_HYBRID)
69348 	handler = (opcode_handler_t)zend_vm_get_opcode_handler_func(zend_user_opcodes[opline->opcode], opline);
69349 	handler(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
69350 	if (EXPECTED(opline != &hybrid_halt_op)) {
69351 #else
69352 	((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
69353 	if (EXPECTED(opline)) {
69354 #endif
69355 		ret = execute_data != ex ? (int)(execute_data->prev_execute_data != ex) + 1 : 0;
69356 		SAVE_OPLINE();
69357 	} else {
69358 		ret = -1;
69359 	}
69360 #else
69361 	ret = ((opcode_handler_t)OPLINE->handler)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
69362 	SAVE_OPLINE();
69363 #endif
69364 #ifdef ZEND_VM_FP_GLOBAL_REG
69365 	execute_data = orig_execute_data;
69366 #endif
69367 #ifdef ZEND_VM_IP_GLOBAL_REG
69368 	opline = orig_opline;
69369 #endif
69370 	return ret;
69371 }
69372 
69373